列表字段
只需要 继承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,[
// 更多属性
])
}
}