laravel-admin解决表单select联动时,编辑默认没选上的问题

今天在开发公司一个功能时,公司开发环境用的是laravel-admin,因为需要用上select联动,所以根据文档说明进行开发,并成功的使用上了,代码我就不重复,大家可以去参考laravel-admin官网的说明。

首先我们找到select的js,路径:跟目录/vendor/encore/laravel-admin/src/Form/Field下的Select.php文件,找到下面代码:

$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;

并修改成以下代码:

$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;

我们在原有代码中加入这句:

$(\'{$this->getElementClassSelector()}\').trigger(\'change\');

作用就是在初始化的时候触发一次联动。

然后在我们的表单中,我们再来定义编辑初始时候的值,代码如下:

$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联动时,编辑默认没选上的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持免费资源网。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容