thinkphp5.1和thinkphp5.0验证的区别

最近在学习tp5.1,沿用5.0的代码发现不能触发验证,打开thinkphp5.1官方手册发现,原来的写法只能验证全部或者不验证全部规则,但是不能为去掉某个不需要的验证规则。

以下是thinkphp5.0的验证规则,验证提示和验证场景写法:

<?php
namespace app\admin\validate;
use think\validate;
class Admin extends validate
{
protected $rule=[
'uname'=>'require|unique:admin',
'groupid'=>'require',
'password'=>'require|min:6',
];


protected $message=[
'uname.require'=>'管理员名称不得为空!',
'uname.unique'=>'管理员名称不得重复!',
'groupid.require'=>'所属用户组不得为空',
'password.require'=>'管理员密码不能为空!',
'password.min'=>'管理员密码不能少于6位!',
];
protected $scene=[
'add'=>['uname','password','groupid'],
'edit'=>['uname','password'=>'min:6','groupid'],
];
}

在thinkphp5.1中,需要重新定义验证场景来触发验证,需要的验证写在only里面,不需要(移除)的验证规则写在remove里面,另外还可以追加字段验证append,以下是thinkphp5.1的验证规则,验证提示和验证场景写法:

<?php

namespace app\admin\validate;

use think\Validate;


class Cate extends Validate{

protected $rule = [

'pid'      => 'require|number',

'catename' => 'require|min:3|max:60|unique:cate',

'title'    => 'require|min:3|max:60',

];

protected $message = [

'pid.require'      => '请选择上级栏目',

'pid.number'       => '上级栏目id错误',

'catename.require' => '请填写栏目名称',

'catename.min'     => '栏目名称过短',

'catename.max'     => '栏目名称过长',

'catename.unique'  => '栏目名称重复',

'title.require'    => '请填写栏目标题',

'title.min'        => '栏目标题过短',

'title.min'        => '栏目标题过长',

];

//tp5.1验证场景,前面加上scene,自动匹配验证;remove为要删除的规则

public function sceneAdd(){

return $this->only(['pid','catename','title'])->remove();

}

public function sceneEdit(){

return $this->only(['catename','title'])->remove('catename',['require','unique']);

}

}


打赏

  • 评论列表:

添加回复:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。