laravel-admin解決表單select聯(lián)動,編輯默認(rèn)沒選上問題

前幾日公司后臺開發(fā),使用到select表單聯(lián)動功能。但表單聯(lián)動功能實現(xiàn)后發(fā)現(xiàn),重新進(jìn)行編輯后,聯(lián)動項在編輯時未選擇保存值,故修改原代碼實現(xiàn)該功能。
larave-admin中select表單聯(lián)動功能實現(xiàn),如下:

實現(xiàn)代碼如下:
$form->select('province')->options(...)->load('city', '/api/city');
$form->select('city');

其中l(wèi)oad('city', '/api/city');的意思是,在當(dāng)前select的選項切換之后,會把當(dāng)前選項的值通過參數(shù)q, 調(diào)用接口/api/city,并把a(bǔ)pi返回的數(shù)據(jù)填充為city選擇的選項,其中api/api/city返回的數(shù)據(jù)格式必須符合:

控制器action的代碼示例如下:

public function city(Request $request)
{
    $provinceId = $request->get('q');

    return ChinaArea::city()->where('parent_id', $provinceId)->get(['id', DB::raw('name as text')]);
}

通過調(diào)試發(fā)現(xiàn),默認(rèn)未選中主要是,頁面初始化時,未調(diào)用聯(lián)動數(shù)據(jù)接口,故只需實現(xiàn)頁面初始化時調(diào)用聯(lián)動接口即可。
以下解決默認(rèn)沒選上問題:

首先我們找到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;

然后在'EOT;'前加入如下代碼:

$('{$this->getElementClassSelector()}').trigger('change');
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容