表单配置

表单的添加页面和编辑页面都是通过本方法配置

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

namespace app\admin\controller;

use easyadmin\app\libs\PageForm;
use easyadmin\app\columns\form\FormSelect;
use easyadmin\app\columns\form\FormSwitch;
use easyadmin\app\columns\form\FormText;
use easyadmin\app\columns\form\FormTextarea;
use easyadmin\app\columns\form\FormUpload;

class Category extends \easyadmin\controller\Admin
{

    /**
     * 配置表单
     * @param PageForm $page
     */
    protected function configFormField(PageForm $page)
    {
        $page
            ->addField('parent_id', '上级分类', FormSelect::class, [
                'table' => 'category',
                'pk' => 'id',//使用查询,的主键
                'property' => 'name',//查询显示字段
            ])
            ->addField('name', '分类名称', FormText::class)
            ->addField('icon', '分类图标', FormUpload::class)
            ->addField('intro', '分类简介', FormTextarea::class)
            ->addField('is_del', '是否删除', FormSwitch::class);

        if ($this->getFormType() == 'edit') {
            //编辑页面特有的字段
            $page->addField('edit_field', '名称', FormText::class);
        }else{
            //添加页面特有的字段
            $page->addField('add_field', '名称', FormText::class);
        }

    }
}

区分添加页面和编辑页面 使用$this->getFormType()即可
add: 添加页面
edit: 编辑页面
表单页面的钩子
#project\app\admin\controller\Category.php

namespace app\admin\controller;

use easyadmin\app\columns\lists\ListImage;
use easyadmin\app\libs\ListField;

class Category extends \easyadmin\controller\Admin
{

    //接收参数之后执行, post 接收到参数以后就调用
    protected function requestAfter($data): array
    {
        return $data;
    }

    //写入之前执行, 调用 insert 写入方法之前调用
    protected function insertBefore($data): array
    {
        return $data;
    }

    //写入之后执行,调用 insert 写入方法之后调用
    protected function insertAfter($data): array
    {
        return $data;
    }

    //更新之前执行, 调用 update 更新方法之前调用
    protected function updateBefore($data): array
    {
        return $data;
    }

    //更新之后执行, 调用 update 更新方法之后调用
    protected function updateAfter($data): array
    {
        return $data;
    }

    //添加和更新 数据验证
    // 在 requestAfter 之后 insertBefore updateBefore 之前执行
    protected function verifyData($data): array
    {
        return $data;
    }

}
        
写入 执行顺序为:

POST接收requestAfterverifyDatainsertBeforemysql写入insertAfter 返回结果

更新 执行顺序为:

POST接收requestAfterverifyDataupdateBeforemysql更新updateAfter 返回结果

requestAfter verifyData insertBefore updateBefore 没有特别的明显的边界;都可用于表单验证 默认数据处理等,可选一个喜欢的方法调用即可;

为什么要写这么几个方法,只是为了程序中语义可能更友好;