在控制器中使用验证器的基本方式有两种:

基本用法:复制Curd方法并重写

比如这样:
我们把app\admin\traits\Curd.php中的对应方法赋值到控制器中,然后重写即可

    /**
     * @NodeAnotation(title="添加")
     */
    public function add()
    {
        if ($this->request->isPost()) {
            $post = $this->request->post();

            $rule = [
                'password'=>'require'            // 在这里设置验证的数组
            ];

            // 也可以是一个validate对象
            // $rule = Validate::rule('password',ValidateRule::isRequire()); 

            $this->validate($post, $rule);
            try {
                $save = $this->model->save($post);
            } catch (\Exception $e) {
                $this->error('保存失败:'.$e->getMessage());
            }
            $save ? $this->success('保存成功') : $this->error('保存失败');
        }
        return $this->fetch();
    }

推荐用法:设置validateRule属性

直接在__construct中设置validateRule属性,这样不需要在Curd中复制方法,并且对addedit都生效.

    public function __construct(App $app)
    {
        parent::__construct($app);
        $this->model = new MallCate();

        $this->validateRule = [
            'password'=>'require'            // 在这里设置验证的数组
        ];

        // 也可以是一个validate对象
        // $this->validateRule = Validate::rule('password',ValidateRule::isRequire()); 
    }

设置验证提醒

可以使用validate的第三个方法传递$message提醒信息,也可以像下面这样,直接设置属性.


        public function __construct(App $app)
        {
            parent::__construct($app);
            $this->model = new MallCate();
            $this->validateMessage = [
                'password.require'=>'密码必填'     // 在这里设置提醒的数组
            ];
        }

由于提醒信息是一个数组,所以也可以直接定义属性,不必写在__construct

原文标题:控制器通用验证

原文文档:ulthon_admin

原文地址:https://doc.ulthon.com/read/augushong/ulthon_admin/62189dc07b230/zh-cn/2.x.html

原文平台:奥宏文档

2.x