今天在开发公司一个功能时,公司开发环境用的是laravel-admin,因为需要用上select联动,所以根据文档说明进行开发,并成功的使用上了,代码我就不重复,大家可以去参考laravel-admin官网的说明。
首先我们找到select的js,路径:跟目录/vendor/encore/laravel-admin/src/Form/Field下的Select.php文件,找到下面代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
$script = <<<EOT
$(document).on( 'change' , "{$this->getElementClassSelector()}" , function () {
var target = $(this).closest( '.fields-group' ).find( ".$class" );
$.get( "$sourceUrl?q=" + this.value, function (data) {
target.find( "option" ).remove();
$(target).select2({
data: $. map (data, function (d) {
d. id = d.$idField;
d.text = d.$textField;
return d;
})
}).trigger( 'change' );
});
});
EOT;
|
并修改成以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
$script = <<<EOT
$(document).on( 'change' , "{$this->getElementClassSelector()}" , function () {
var target = $(this).closest( '.fields-group' ).find( ".$class" );
$.get( "$sourceUrl?q=" + this.value, function (data) {
target.find( "option" ).remove();
$(target).select2({
data: $. map (data, function (d) {
d. id = d.$idField;
d.text = d.$textField;
return d;
})
}).trigger( 'change' );
});
});
$( '{$this->getElementClassSelector()}' ).trigger( 'change' );
EOT;
|
我们在原有代码中加入这句:
1
|
$( '{$this->getElementClassSelector()}' ).trigger( 'change' );
|
作用就是在初始化的时候触发一次联动。
然后在我们的表单中,我们再来定义编辑初始时候的值,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
|
$form - >select( 'hezuo' , "合作模式" ) - >options(function () {
$record = request() - >route() - >parameters();
$record = $record[ "chanpin" ];
$data = ChanpinModel::where( 'id' , $record) - >first();
$hezuoList = array(
"1" = > '测试1' ,
"2" = > '测试2' ,
"3" = > '测试3' ,
);
$hezuo = $data - >hezuo;
return [$hezuo = > $hezuoList[$hezuo]];
});
|
这段代码是根据当前记录的值,去获取对应所属那个选项,这样便使select联动编辑时,能够默认选上我们的值。
以上这篇laravel-admin解决表单select联动时,编辑默认没选上的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/HZX19941018/article/details/85052629