自定义字段

列表字段 只需要 继承easyadmin\app\columns\lists\BaseList类,然后根据业务重写即可

表单字段 只需要 继承easyadmin\app\columns\form\BaseForm类,然后根据业务重写即可

1. 创建字段类

#project\app\admin\fields\ListNameField.php

namespace app\admin\fields;


use easyadmin\app\columns\lists\BaseList;


/**
 * Class ListNameField
 * @package app\admin\fields
 */
class ListNameField extends BaseList
{

    protected $jsFiles = []; //内置的 js 资源文件的
    protected $cssFiles = []; //内置的 css 资源文件的

    //指端模板路径 , 会在 当前模块中的 views 目录中查找
    // 本次定义查找路径位 project\app\admin\views\list\list_name.html
    protected $templatePath = 'list:list_name';


    //开放调用者的属性,
    protected $options = [

        //'template'=>'',
        //'attr' => '',//属性
        //'class' => '',//样式表
        //'format' => null,//格式化输出,格式化给用户看  例如: Y-m-d H:i:s  |  匿名函数 ;
        //'in_format' => null,//格式化输入,格式化后操作数据库或者存入数据库  strtotime | 匿名函数
        //'highlight' => false, //包含搜索的值是否高亮 ; false 关闭高亮, 不写或者 true 开启高亮
        //'default' => null,//默认值
        //'filter_callback' => null,//过滤器回调 参数有2个  query查询对象  $alias别名
        //'end_field' => null,//日期时间范围选择器, 第二个字段

        // ... 自定义更多属性
        // 获取属性的方法  $default = $this->getOption('default','zhangSan');
    ];


    /**
     * 可根据业务需要重写
     *
     * 格式化后输出到界面
     * @return bool|int|mixed|string|null
     */
    public function formatValue(){
        // 获取一个属性
        // $default = $this->getOption('default','zhangSan');

        $val = $this->getValue();
        return $val;
    }


    /**
     * 可根据业务需要重写
     *
     * 设置界面可用的变量
     * @return array
     */
    protected function getData(): array
    {
        $elemId = 'id_' . $this->getSelectAlias() . '_' . $this->row->getRowId();

        return [
            'field' => $this->getField(),//列的字段
            'row' => $this->row->getRow(), //行的数据 array
            'row_id' => $this->row->getRowId(), //行的主键值
            'attr' => $this->getOption('attr', ''), //列的属性
            'class' => $this->getOption('class', ''), //列的样式
            //dom 元素 id
            'elem_id' => str_replace(':', '_', $elemId),
        ];
    }




}


        

2. 创建模板

#project\app\admin\views\list\list_name.html

自定义列表字段

可用变量

value: {$value} 本列的值
field: {$field} 当前字段名称
row: {:var_dump($row)} 本行数据
row_id: {$row_id} 行ID
attr: {$attr} 属性
class: {$class} 样式表
elem_id: {$elem_id} 本列ID
static_root: {$static_root} 资源目录

3. 调用

#project\app\admin\controller\Category.php

namespace app\admin\controller;

use app\admin\fields\ListNameField;
use easyadmin\app\libs\ListField;

class Category extends \easyadmin\controller\Admin
{

    /**
     * 配置列表字段
     * @param ListField $list
     */
    protected function configListField(ListField $list)
    {
        $list
            // 自定义字段调用
            ->addField('name', '分类名称', ListNameField::class,[
                // 更多属性
            ])
    }

}