laravel-admin基础部分不需要讲,手册上都有,今天讲解一下团队中遇到的一个二次开发问题,具体的需求是:
数据表中存在两个字段:
a1 string
a2 string
当创建新的数据时候,如果a2输入框中字符串可以在原有数据中查询到,那么a1输入框中就自动填写上这个数据的a1字段内容。
所用事件
这种情况有两种思路,一种是监视输入的字符串,一种是失去焦点。
监视字符串: oninput
失去焦点:onblur
这里我们不去讨论对数据库的压力,优先实现功能。
laravel-admin源代码
由于我们使用的text进行创建,我们在from中代码:
protected function form()
{
$form = new Form(new Test);
// $form->display('ID');
$form->text('a1', 'a1输入');
$form->text('a2', 'a2输入');
}
from中text调用HasFields.php中的’text’ => Field\Text::class,这样我们就可以开始针对Text.php进行二次开发。
如果你还想接受升级,那么可以重新编写一个Text类继承Text然后修改调用中的class。
这段是构建html中text的样式和js部分。我们可以看一下源代码中是如何调用icon。
protected $icon = 'fa-pencil';
public function icon($icon)
{
$this->icon = $icon;
return $this;
}
public function render()
如果大家看过laravel-admin手册,应该会找到text调用icon:
$form->text($column, [$label])->icon('fa-pencil');
现在我们就了解了调用机制,我们的思路是当调用函数的时候写入ajax,下面我们以oninput进行写入:
protected $oninput = false;
protected $input_api