model中的rules如何在ajax验证中被重用? [ 新手入门 ]
如题!!摆弄了很久找不到一个好办法,要代码少点,不重复写rules http://www.yiiframework.com/forum/index.php?/topic/19215-how-to-reuse-the-rules-defined-in-rules-in-ajax-validation/ 这是官网论坛的讨论 别人说是用CActiveForm::validate 即使是这样,在CActiveForm::validate中也会循环当前场景可用的rules,比如当我只想验证用户名,但却同时验证了密码
共 27 条回复
-
guishentan 回复于 2013-11-01 14:32 举报
翻出来这篇文章,但是感觉依旧不能解决我的问题,想继续追问一二
1,砖家所说的js里编写自己需要提交验证的内容,这个是在view里面去写么?
2,如果我的需求是用户名输入框失去焦点是提交POST验证用户名,密码输入框失去焦点时提交验证密码该怎么去做?是沿用以前的开发方式自己写js代码来做么?如果使用widget能否快速达到这个要求?
本人是新手,所以请大牛赐教
-
chenkelang90120 回复于 2012-06-20 16:44 举报
晕!没看懂啊:L
-
可以看看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'的验证结果
崩盘砖家
注册时间:2011-02-26
最后登录:1970-01-01
在线时长:0小时0分
最后登录:1970-01-01
在线时长:0小时0分
- 粉丝0
- 金钱375
- 威望0
- 积分375