newadmin/vendor/lin/admin/src/Form/Field/CanCascadeFields.php
/**
* @return string
*/
protected function getFormFrontValue()
{
switch (get_class($this)) {
case Radio::class:
case RadioButton::class:
case RadioCard::class:
case Select::class:
case BelongsTo::class:
case BelongsToMany::class:
case MultipleSelect::class:
return 'var checked = $(this).val();';
case Checkbox::class:
case CheckboxButton::class:
case CheckboxCard::class:
return <<<SCRIPT
var checked = $('{$this->getElementClassSelector()}:checked').map(function(){
return $(this).val();
}).get();
SCRIPT;
//新添加的
case SelectTable::class:
{
return <<<SCRIPT
var checked = $("{$this->getElementClassSelector()}-field").val();
SCRIPT;
}
default:
throw new \InvalidArgumentException('Invalid form field type');
}
}
newadmin/vendor/lin/admin/src/Form/Field/SelectTable.php
use CanCascadeFields;
protected $cascadeEvent = 'change';
public function render()
{
$name = $this->elementName ?: $this->formatName($this->column);
if(is_array($name)){
$name = implode("_",$name);
}
$this->name = $name;
$this->placeholder("请选择");
$this->initPlainInput();
$this->prepend('<i class="fa fa-pencil fa-fw"></i>')
->defaultAttribute('type', 'text')
->defaultAttribute('id', $this->id)
->defaultAttribute('name', $this->column())
->defaultAttribute('value', old($this->column, $this->value()))
->defaultAttribute('class', 'form-control ' . $this->getElementClassString() . ' ' . $this->name)
->defaultAttribute('placeholder', $this->getPlaceholder());
// $this->addElementClass($name);
if ($this->many == 0) {
$this->select_url .= "&_only_one=1";
}
$this->setDisplayScript();
$dialog = $this->dialog($name);
$this->addExtraData([
'prepend' => $this->prepend,
'select_url' => $this->select_url,
'dialog' => $dialog,
'options' => json_encode($this->options,JSON_UNESCAPED_UNICODE),
]);
//新添加的
$this->addCascadeScript();
return parent::render();
}
测试
/**
* 表单
* @param null $id
* @return Form|void
*/
public function form($id = null)
{
$form = new Form(new $this->model());
$usertable = [
"4022"=>"4022"
];
$form->selectTable("user_id", "用户")
->controller("Cusertable")->title("选择用户")->model($usertable)
->when(4022, function (Form $form) {
$form->text("text", "text");
});
return $form;
}