2013-08-01 134 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

回答