Yii的自定义验证
问题描述:
我在视图中使用自定义的验证模型Yii的自定义验证
class RegisterForm extends CFormModel
{
public $codiceMembro;
//...some more attributes
//validation
public function rules()
{
return array(
array('codiceMembro', 'codiceODataNascita'),
//...some more rules
);
}
// Declares attribute labels.
public function attributeLabels()
{
return array(
'codiceMembro'=>"a description",
//...some more labels
);
}
//My own custom validate function, always error for it
public function codiceODataNascita($attribute, $params){
$this->addError('codiceMembro','a bad message');
}
//...other model stuff
}
然后,我在这里是如何插入模型
<?php
$model=new RegisterForm;
$form=$this->beginWidget('CActiveForm', array(
'id'=>'register-form',
'enableClientValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
),
));
?>
<div class="row">
<?php echo $form->label($model, 'codiceMembro'); ?>
<?php echo $form->textField($model, 'codiceMembro');?>
<?php echo $form->error($model,'codiceMembro'); ?>
</div>
//...so on till the end of the code
我想到的是,无论我型,我得到如果你想的错误消息
而是这个代码一切都验证为OK
答
您自定义验证器来支持客户端验证,您需要通过扩展CValidator来创建自定义验证器类。这里是一个wiki页面,详细说明如何做到这一点:http://www.yiiframework.com/wiki/168/create-your-own-validation-rule/#hh1
+0
你能解释一下如何扩展和使用这个类吗?以及放置在哪里? –
+0
您是否阅读过wiki?你的具体问题是什么? – jmarkmurphy
你正在按提交按钮,并在你的控制器中调用validate方法吗?验证器必须支持客户端验证才能使用它,并且我不知道模型中的自定义验证器是否可以执行此操作。 – jmarkmurphy
不,我想在填写表单时验证值......特别是我必须检查是否填充了某个特定字段或其他字段。但是你的评论让我怀疑,我想要做的事情是客户端验证。 – gopal