dropme 2012-05-09 09:31:43 3661次浏览 3条回复 0 0 0

菜鸟一枚,求教高手~~~ 比如说写一个注册的formmodel,用户名只能是email或者手机号码,11位长的一串数字。这个rules要怎么写?必须要自定义一个validator吗?能不能利用yii现成的rules组合一下?

  • 回复于 2012-05-14 00:04 举报

    但是这样写的话,是不是一个AND的意思,就是既要是email格式,长度又要是10-20之间?
    而我是想要一个OR的意思,就是 或者是email,或者是一个长度13位的纯数字。这个怎么弄?

    public function checkIsA($attribute,$params){
      if($this->$attribute!=='A'){
        $this->addError($attribute,'你的email不等于A');;
      }
    }
    

    这里 if($this->$attribute!=='A'){} ,判断的时候,我就要自己写代码,判断这里是不是email或者数字。但是我不想自己写(不是因为我懒),我只是觉得,yii已经写好了,有判断email和数字的方法,我能不能通过一种方式去调用它呢?

  • 回复于 2012-05-14 15:46 举报

    貌似确实没有或的关系去验证呢~~

  • 回复于 2012-05-14 16:42 举报

    自定义,

    public function checkIsA($attribute,$params){
      $validator = new CEmailValidator;
      if(!$validator->validateValue($this->$attribute) && $this->$attribute!=='A'){
        $this->addError($attribute,'你的email格式不正确或者不等于A');
      }
    }
    

    这算是或了吧。

您需要登录后才可以回复。登录 | 立即注册