yii表单提交Validate过程详解
来源:互联网 发布:pc端前端数据渲染 编辑:程序博客网 时间:2024/06/06 19:35
在action函数中,调用model中的validate函数
$model=new LoginForm;
$model->attributes=$_POST['LoginForm'];
if($model->validate() && $model->login())
$this->redirect(Yii::app()->user->returnUrl);
CModel::validate($attributes=null, $clearErrors=true)
{
$this->beforeValidate()
foreach($this->getValidators() as $validator)$validator->validate($this,$attributes);
$this->afterValidate();
}
CModel::getValidators()
$this->_validators=$this->createValidators();
public function createValidators()
{
$validators=new CList;
foreach($this->rules() as $rule) //从rule数组中读取规则
{
if(isset($rule[0],$rule[1])) // attributes, validator name
$validators->add(CValidator::createValidator($rule[1],$this,$rule[0],array_slice($rule,2)));
else
throw new CException(Yii::t('yii','{class} has an invalid validation rule. The rule must specify attributes to be validated and the validator name.',
array('{class}'=>get_class($this))));
}
return $validators;
}
CValidator::createValidator($rule[1],$this,$rule[0],array_slice($rule,2))//如果Model类中有这个函数名,则直接用Model类中的函数,否则,创建系统默认的类,如CRequiredValidator
{ if(method_exists($object,$name))
{
$validator=new CInlineValidator;
$validator->attributes=$attributes;
$validator->method=$name;
else
{
$params['attributes']=$attributes;
if(isset(self::$builtInValidators[$name]))
$className=Yii::import(self::$builtInValidators[$name],true);
else
$className=Yii::import($name,true);
$validator=new $className;
foreach($params as $name=>$value)
$validator->$name=$value;
}
}
CRequiredValidator::validateAttribute($object,$attribute) //最终调用对应的Validate类中的CValidator::validate函数调用子类的validateAttribute函数
{
$value=$object->$attribute;
if($this->requiredValue!==null)
{
if(!$this->strict && $value!=$this->requiredValue || $this->strict && $value!==$this->requiredValue)
{
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} must be {value}.',
array('{value}'=>$this->requiredValue));
$this->addError($object,$attribute,$message);
}
}
elseif($this->isEmpty($value,$this->trim))
{
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} cannot be blank.');
$this->addError($object,$attribute,$message);
}
}
0 0
- yii表单提交Validate过程详解
- yii表单提交
- Yii的表单提交
- jquery---------ajax+validate表单异步提交验证
- jquery---------ajax+validate表单异步提交验证
- jquery---ajax异步提交+validate表单验证
- validate验证+jquery+ajax提交表单
- jquery---------ajax+validate表单异步提交验证
- YII表单ajax无刷新提交
- yii 提交表单 400 bad request问题
- yii表单提交后无法验证
- Yii Form表单提交时出现错误
- jquery validate表单验证插件制作注册表单验证提交
- jQuery validate表单正则验证功能详解
- jQuery校验 jQuery Validate 表单验证详解
- jquery validate 在ajax提交表单下的验证方法
- 学习JQuery EasyUI总结(一) 表单提交与validate
- Form表单利用Jquery Validate验证以及ajax提交
- Java正则表达式中的十大问题
- 高斯分布和二项分布属于指数分布族的证明
- asp.net mvc 503 错误
- 图论精练500题
- 使用ngrok让微信公众平台通过80端口访问本机
- yii表单提交Validate过程详解
- 说服与销售:克服层层阻力
- 汉诺塔问题的递归实现(扩展)
- 程序员的人生
- html5 (EME)Encrypted Media Extensions
- easyui和jqueryui冲突解决
- zvasdf
- Ubuntu操作系统学习笔记之NFS基础
- UI-控件-TextField