laravel-admin select聯動問題

acvc225發表於2021-07-21

在laravel-admin專案中需要完成一個需求:
選擇一個select選項後,需要同時聯動賦值給select2,select3選項

laravel-admin select聯動問題

有了解到laravel-admin本身帶有 ->loads() 方法,所以嘗試使用了,如下:

$form->select('goods', __('商品名稱'))->options(function(){
            $list = [];
            $goods = Good::where('state',1)->get();
            foreach ($goods as $k => $v) {
                $list[$v['id']] = $v['name'];
            }
            return $list;
        })->loads(['supplier_goods','purchaser_good'],['/api/getsuppliergoods','/api/getpurchasergoods']);
$form->multipleSelect('supplier_goods', __('供應商商品'));
$form->multipleSelect('purchaser_good', __('採購商商品'));

實際執行後,發現 supplier_goods 可以正常選擇,但是 purchaser_good 選項框可以正常顯示內容,但是無法選中內容,也沒有發現報錯。
將 multipleSelect 改為 select :$form->select('purchaser_good', __('採購商商品')); 再次執行,發現還是無法選擇,並且在點選時會報如下錯誤:
laravel-admin select聯動問題

經過一番檢視,終於發現問題,原來是 '/api/getpurchasergoods' 對應的控制器裡方法寫的有問題。
官方的統一寫法是 ->get(['id', DB::raw('purchaser_id as text')])->toarray();
但是這裡由於我最初是想直接獲取採購商id的,所以就改成:->get(['purchaser_id', DB::raw('purchaser_id as text')])->toarray();
因此可能導致了框架找不到select標籤對應的id,所以無法進一步選擇操作。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章