2016-05-31 23:51:49 10948次浏览 3条回答 2 悬赏 120 金钱

在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的数字或字母');
        }
    }

第一个是有效的('请输入用户名),但是第二个就没效果了,不验证了,不知道是什么情况,有知道的吗

最佳答案

  • koko 发布于 2016-06-01 09:42 举报

    你这样仅支持提交后验证,要在填写时验证,再去前台写一个验证js才能实现.

    2 条回复
    回复于 2016-06-01 09:56 回复

    恩,感谢提醒,已解决,这个赏金怎么给你呢?

    回复于 2016-06-01 09:57 回复

    谢谢.把你满意的答案设置成最佳答案就行.

  • 回答于 2016-06-01 08:46 举报

    Core validator 如 required 同时支持客户端验证和服务端验证;Inline validator 如 validname 不支持客户端验证,仅支持服务端验证。换句话说,validname validator 必须提交表单后才能触发验证。

    1 条回复
    回复于 2016-06-01 08:56 回复

    自定义的规则需要提交表单才能验证??

    , 觉得很赞
  • 回答于 2016-06-01 08:52 举报

    rules 相关验证可以多试试

您需要登录后才可以回答。登录 | 立即注册
离空气
CEO

离空气 江苏南京

注册时间:2014-11-03
最后登录:2024-05-17
在线时长:90小时6分
  • 粉丝8
  • 金钱12040
  • 威望20
  • 积分13140

热门问题