在rules里面自定义规则,代码如下:
public function rules()
{
return [
['username','required','message'=>'请输入用户名'],
['username' , 'checkname' , 'skipOnEmpty' => false],
];
}
public function checkname($attribute , $params)
{
if(!preg_match("/^[\w]{6,20}$/" , $this->$attribute)){
$this->addError($attribute , '用户名必须为6~20的数字或字母');
}
}
第一个是有效的(’请输入用户名),但是第二个就没效果了,不验证了,不知道是什么情况,有知道的吗
你这样仅支持提交后验证,要在填写时验证,再去前台写一个验证js才能实现.
Core validator 如 required
同时支持客户端验证和服务端验证;Inline validator 如 validname
不支持客户端验证,仅支持服务端验证。换句话说,validname
validator 必须提交表单后才能触发验证。
rules 相关验证可以多试试