一. 起因
在 laravel-admin 文件中
或者從 api 中獲取選項列表:
$form->select($column[, $label])->options('/api/users');
其中 api 介面的格式必須為下面格式:
[
{
"id": 9,
"text": "xxx"
},
{
"id": 21,
"text": "xxx"
},
...
]
使用 API Resource 的好處是統一管理,多個欄位隨意組合
這個格式固定,但是 laravel 使用 API Resource 返回資料前面多了 data 鍵,在 laravel 框架試了幾次發現不行,然後發現在 laravel-admin 重寫元件可以解決此問題
稍微提個建議 , laravel-admin 文件可以支援一下全域性搜尋,對查詢文件有點不太友好
開始
在 app/Admin 目錄下建立資料夾 Extensions
追蹤
$form->select($column[, $label])->options('/api/users');
原始碼到 namespace Encore\Admin\Form\Field; 中的 Select.php
發現呼叫了 loadRemoteOptions 方法
select.select2({
data: data,
$configs
});
接下來把 Select.php 複製到 App\Admin\Extensions 下
然後修改 loadRemoteOptions 方法
select.select2({
data: data.data,
$configs
});
最後一步就是修改 app/Admin/bootstrap.php 把原來的檔案遮蔽掉
use Encore\Admin\Form;
Form::forget('select');
Form::extend('select', \App\Admin\Extensions\Select::class);
完成了,如果有更好的方法請留言
本作品採用《CC 協議》,轉載必須註明作者和本文連結