当前位置:首页 > CMS教程 > 其它CMS > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-26 16:18:10 浏览: 评论:0 

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

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

  1. $script = <<<EOT 
  2. $(document).on('change'"{$this->getElementClassSelector()}"function () { 
  3.  var target = $(this).closest('.fields-group').find(".$class"); 
  4.  $.get("$sourceUrl?q="+this.value, function (data) { 
  5.   target.find("option").remove(); 
  6.   $(target).select2({ 
  7.    data: $.map(data, function (d) { 
  8.     d.id = d.$idField
  9.     d.text = d.$textField
  10.     return d; 
  11.    }) 
  12.   }).trigger('change'); 
  13.  }); 
  14. }); 
  15.    
  16. EOT; 

并修改成以下代码:

  1. $script = <<<EOT 
  2. $(document).on('change'"{$this->getElementClassSelector()}"function () { 
  3.  var target = $(this).closest('.fields-group').find(".$class"); 
  4.  $.get("$sourceUrl?q="+this.value, function (data) { 
  5.   target.find("option").remove(); 
  6.   $(target).select2({ 
  7.    data: $.map(data, function (d) { 
  8.     d.id = d.$idField
  9.     d.text = d.$textField
  10.     return d; 
  11.    }) 
  12.   }).trigger('change'); 
  13.  }); 
  14. }); 
  15.    
  16. $('{$this->getElementClassSelector()}').trigger('change'); 
  17.    
  18. EOT; 

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

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

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

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

  1. $form->select('hezuo'"合作模式")->options(function () { 
  2.  $record = request()->route()->parameters(); 
  3.  $record = $record["chanpin"]; 
  4.  $data = ChanpinModel::where('id'$record)->first(); 
  5.  $hezuoList = array
  6.   "1" => '测试1'
  7.   "2" => '测试2'
  8.   "3" => '测试3'
  9.   ); 
  10.  $hezuo = $data->hezuo; 
  11.  return [$hezuo => $hezuoList[$hezuo]]; 
  12. }); 

这段代码是根据当前记录的值,去获取对应所属那个选项,这样便使select联动编辑时,能够默认选上我们的值。

Tags: laravel-admin select联动

分享到: