TP5.1验证器

之前在TP里面判定的时候一直用的if什么的逻辑语句直接判定,很少用验证器,因为觉得验证器写起来很麻烦。用起来也比较麻烦,直到今天被强迫用了一次验证器,才发现原来是以前自己太菜了,写不出来好的验证器,,验证器真好用,真香!

验证器的定义

先从简单的开始,创建validate目录,和控制器同级,然后use引入think\validate
一开始较为简单的两部分,就是我以前菜的只会写的那两部分

protected $rule = [
        'eid'         => 'require|checkEid',
        'tid'         => 'require|integer|checkTid',
        'sno'         => 'require|checkSno',
        'sid'         => 'require|checkSid',
        'description' => 'require|length:10,500',
        'deal'        => 'require',
        'username'    => 'require|checkMid',
        'status'      => 'require|in:0,1',
        'result'      => 'require'
    ];

直接把我自己写的代码放上来了,rule就是规则,指自己的字段应该符合怎么样的要求没什么好说

protected $message = [
        'username.require'    => '请填写负责人用户名',
        'username.checkMid'   => '负责人用户名不存在',
        'tid.require'         => '请选择事件类型',
        'tid.checkType'       => '该事件类型不存在',
        'description.require' => '请填写事件描述',
        'description.length'  => '描述字段长度在10到500个字符之间',
        'deal.require'        => '请填写处理方式',
        'sno.require'         => '请输入学号',
        'sno.checkSno'        => '请输入正确的学号',
        'status.require'      => '请填写事件状态',
        'eid.require'         => '未接收到相关事件数据',
        'eid.checkEid'        => '无该事件数据或该事件已处理完成',
        'status.in'           => '事件状态不合法',
        'result.require'      => '请输入最终的处理结果'
    ];

验证信息,当数组的键值不符合rule中的规则时所报的错,,以前觉得这东西很少用,,做了项目后发现,系统自带的提示实在是太简陋了,用户体验极其不好,所以能尽量自己写提示就自己写提示。

验证场景

然后,就是让我觉得验证器好用的地方了,验证场景一共有两种定义方法,同样的先将我自己的代码贴出来。

/**
     * @验证场景
     */
    protected $scene = [
        'selectsno' => ['sno'],
        'deal'      => ['eid'],
        'submit'    => ['eid', 'result']
    ];

    //add 验证场景定义
    public function sceneAdd()
    {
        return $this->only(['tid', 'sid', 'description', 'deal', 'username', 'status'])
            ->remove('sid', 'checkSid');
    }

在这里一共写了四个验证场景,前三个在数组$scene里面定义,通常用来定义一下简单的场景,左边是名字,自己随便定义就好,右边就是这个场景名字对应所需要验证的字段,比如第一行

‘selectsno’ => [‘sno’],

意思就是selectsno这个场景我们只需要验证sno这个字段就好了,其他的都不用管,很方便,而且不用重复写,只要将所有的规则写到一块,然后在调用的时候需要哪一块就将哪一块写进来,取个名字,在外面调用的时候用场景名字就可以了,非常方便
而第二种方法让我觉得验证更方便了

$this->only([‘tid’, ‘sid’, ‘description’, ‘deal’, ‘username’, ‘status’])
->remove(‘sid’, ‘checkSid’);

only里面写的是需要定义的字段,和第一种方法差不多然后这个remove就是可以指定字段让其中指定一个验证方法不生效,在写一些较大的项目里,这个方法简直不要太好用,可以说这两点让我知道了验证器是有多么的强大,好用。

最后,在验证器里也可以使用一些自己定义的验证方法,一般用来联合表查询进行写,这里就不再多做赘述,想要深入了解可以去看文档也是一个不错的方法。

真香!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值