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 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!