执行顺序:

setIndexRowDo(字段) → setIndexListDo(字段) → indexData(控制器)

方式1:控制器事件

  1. <?php
  2. namespace app\controller;
  3. use app\BaseController;
  4. class User extends BaseController
  5. {
  6. use \tpScriptVueCurd\base\controller\Controller;
  7. public function init(): void
  8. {
  9. $this->title='人员信息';
  10. $this->md=\app\model\User::make($this);
  11. }
  12. /**
  13. * 列表的数据会执行此操作,可在此处进行控制
  14. */
  15. protected function indexData(FunControllerIndexData $option): void
  16. {
  17. foreach ($option->data as $k=>$v){
  18. $option->data[$k]['要改变或添加的字段']='设置字段的值';
  19. }
  20. }
  21. }

方式2:字段事件

<?php
namespace app\model;
use think\Collection;
use tpScriptVueCurd\base\model\BaseModel;
use tpScriptVueCurd\field\RadioField;
use tpScriptVueCurd\field\StringField;
use tpScriptVueCurd\FieldCollection;
use tpScriptVueCurd\ModelField;

class User extends BaseModel
{

    /**
     * 表字段配置
     * @return FieldCollection
     */
    public function fields(): FieldCollection
    {
        $sexField=RadioField::init('sex', '性别');
        $sexField->pushFieldDo()
            //当sex字段在列表中获取时,会执行此事件
            ->setIndexListDo(function (Collection $list,?BaseModel $base,ModelField $field){
                //这里可对整个列表进行处理
                foreach ($list as $k=>$v){
                    $v['要改变或添加的字段']='设置字段的值';
                }
            })
            //当sex字段在列表中获取时,会执行此事件
            ->setIndexRowDo(function (BaseModel $row,?BaseModel $base,ModelField $field){
                //这里可对单条数据进行处理
                $row['要改变或添加的字段']='设置字段的值';
            });

        return new FieldCollection([
            StringField::init('name','姓名'),
            $sexField,
        ]);
    }
}