sxtuwy 2012-10-25 09:44:18 3340次浏览 5条回复 0 0 0

在更新用户信息的表单中,rules不起作用是怎么回事?注册的的时候验证规则能发挥作用,修改的时候不行,怎么回事?

  • 回复于 2012-10-25 10:35 举报

    发出代码来看看。。。

  • 回复于 2012-10-25 13:37 举报
    public function rules()
    {
        // NOTE: you should only define rules for those attributes that
        // will receive user inputs.
        return array(
            array('username, fullname, sex, classroom_id, grade_id', 'required'),
            array('password,confirmPassword', 'required','on'=>'create'),
            array('username','unique','on'=>'create,update'),//,'className'=>'User'
            array('password', 'compare', 'compareAttribute'=>'confirmPassword','on'=>'create,update'),
            //array('confirmPassword', 'compare', 'compareAttribute'=>'password','on'=>'update'),
            array('sex', 'numerical', 'integerOnly'=>true),
            array('username, password, fullname', 'length', 'max'=>16,'on'=>'create'),
            array('classroom_id, grade_id', 'length', 'max'=>8),
            array('photo','file','types'=>'jpg,gif,png','maxSize'=>'524288','allowEmpty'=>false,'on'=>'create'),
            array('verifyCode', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements()),
            array('remark', 'safe'),
            array('fullname', 'match','pattern'=>"/^[\x7f-\xff]+$/",'message'=>"姓名只能是中文!"),//这行也能用。还有说是080
            array('username,password', 'match','pattern'=>"/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",'message'=>"只允许字母、数字、下划线!"),
            // The following rule is used by search().
            // Please remove those attributes that should not be searched.
            array('id, username, password, fullname, sex, classroom_id, grade_id', 'safe', 'on'=>'search'),
            //array('password,confirmPassword','alter_pwd','on'=>'update'),
        );
    }
    
  • 回复于 2012-10-25 14:18 举报

    这里面的哪个规则不管用呢?逻辑挺复杂的~

  • 回复于 2012-10-25 19:16 举报

    on 验证器将被应用到的情景模式的列表。数组的键-值都是情景模式的名称。
    写成‘on’=>array('create','update')试试呢?

  • 回复于 2012-10-26 06:10 举报
    if($model->save()){
        Yii::app()->user->setFlash('updated','修改成功!');
        $this->refresh();//当用户刷新时去掉提示,而不是重复提交。
    }
    

    原来是$this->refresh搞的鬼,因为没有加大括号,导致一起刷新,唉.....辛苦各位了。

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