崩盘砖家

崩盘砖家

这家伙有点懒,还没写个性签名!

  • 财富值375
  • 威望值0
  • 总积分375

个人信息

  • 用php自带的json函数 json_encode
    或者yii的json函数CJSON::encode

  • 你不应该修改框架代码,应该在protected目录中继承框架内部类,这样即使框架源码升级了你的代码基本不需要改动

  • 意思就是php写好后就不管了
    js想怎么ajax验证是js的事
    如果只验证用户名,需要post变量 :

    $_POST['ajaxValidate']='username'
    

    如果只验证captcha,需要post变量 :

    $_POST['ajaxValidate']='captcha'
    

    如果想全部验证,就

    $_POST['ajaxValidate']='captcha,username,password,autoLogin'
    
  • 晕了几天的问题终于在舰长的指导下解决了

  • 哦哦哦!!!,就是,怎么我这几天都没想到这个

    但是怎么和js端指定一个协议好呢?

    比如规定
    $_POST['ajaxValidate']='要验证的attr,以英文逗号分隔'
    这样php端判断ajax验证的时候对$_POST['ajaxValidate']进行处理,生成attributes(要验证的attr)

  • 不知道问题描述,大家清楚了没有?

  • 可以看看CActiveForm::validate的源代码,在CActiveForm::validate方法中,对当前场景的所有attributes进行了验证

    public static function validate($models, $attributes=null, $loadInput=true)
    {
      $result=array();
      if(!is_array($models))
      $models=array($models);
      foreach($models as $model)
      {
        if($loadInput && isset($_POST[get_class($model)]))
        $model->attributes=$_POST[get_class($model)];
        $model->validate($attributes);
        foreach($model->getErrors() as $attribute=>$errors)
        result[CHtml::activeId($model,$attribute)]=$errors;
      }
      return function_exists('json_encode') ? json_encode($result) : CJSON::encode($result);
    }
    

    现在进行username的ajax验证,
    当调用echo CActiveForm::validate($loginModel);进行ajax验证的时候,会将('username','password','autoLogin','verifyCode')这4个attr进行验证,返回的时候,js只取'username'的验证结果

  • 可能我没描述清楚,我重新说下
    以登录为例

    public function rules() {
      return array(
        array('username, password', 'required'),
        array('autoLogin', 'safe'),
        array('password', 'authenticate'),
        array('verifyCode','captcha','captchaAction'=>'public/captcha'),
      );
    }
    //
    这个rules如何以ajax方式进行验证?
    如果以CActiveForm的方式进行ajax验证
    
    if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
    {
      echo CActiveForm::validate($loginModel);
      Yii::app()->end();
    }
    

    注意,在CActiveForm::validate的过程中,即使js发送的ajax请求只验证username,
    但这种代码方式造成的结果是password,verifyCode同时被验证,虽然最后ajax需要的只是username的验证结果

  • $this->open是做什么用的?

见习主管 等级规则
375/500
资料完整度
20/100
用户活跃度
0/100

Ta的关注

0

Ta的粉丝

0

Ta的访客

28