2013-08-01 113 views
0

我在视图中使用自定义的验证模型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

+0

你正在按提交按钮,并在你的控制器中调用validate方法吗?验证器必须支持客户端验证才能使用它,并且我不知道模型中的自定义验证器是否可以执行此操作。 – jmarkmurphy

+0

不,我想在填写表单时验证值......特别是我必须检查是否填充了某个特定字段或其他字段。但是你的评论让我怀疑,我想要做的事情是客户端验证。 – gopal

回答