Laravel-admin 处理 select 有 data 键的情况
一. 起因
在 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 协议》,转载必须注明作者和本文链接
推荐文章: