2012-12-18 22 views
3

這裏是我的規則方法:Yii的驗證:一些錯誤不顯示

public function rules() { 
    $newRules = array( 
    array('password_verification, valid_from, valid_until', 'required'),     
    array('password_verification', 'length', 'min'=>6, 'max'=>32), 
    array('password_verification', 'compare', 'compareAttribute'=>'password'), 
    array('username, email', 'length', 'min'=>3,'max'=>255), 
    array('password', 'length','min'=>6, 'max'=>32), array('username, email', 'unique'), 
    array('email', 'email'), array('id, type, username, password, email, valid_from, valid_until', 'safe'), 
); 
    return array_merge($newRules,parent::rules()); 
} 

這是我的看法(這給硬時間字段):

<div class="row"> 
    <?php echo $form->labelEx($user,'password_verification',array('label'=>'Verification mot de passe','class'=>'forsys-label')); ?> 
    <?php echo $form->passwordField($user,'password_verification',array('size'=>30,'maxlength'=>32)); ?> 
    <?php echo $form->error($user,'password_verification') ?> 
</div> 

<div class="row"> 
    <?php echo $form->labelEx($user,'valid_from',array('label'=>'Valide depuis le','class'=>'forsys-label')); ?> 
    <?php echo $form->dateField($user,'valid_from'); ?> 
    <?php echo $form->error($user,'valid_from'); ?> 
</div> 
<div class="row"> 
    <?php echo $form->labelEx($user,'valid_until',array('label'=>"Valide jusqu'au",'class'=>'forsys-label')); ?> 
    <?php echo $form->dateField($user,'valid_until'); ?> 
    <?php echo $form->error($user,'valid_until'); ?> 
</div> 

一些信息:

  • enableClientValidation和enableAjaxValidation都爲真
  • datefield是一種成本法。這不是問題出在哪裏(一位同事以沒有這個問題的方式使用它)。

我的問題:

對於 「valid_until」 和 「VALID_FROM」 錯誤不會顯示在HTML。 如果我讓「password_verification」爲空,當我改變焦點時會出現一個錯誤(因爲ajaxValidation onChange),但是如果我讓「valid_until」或「valid_from」爲空,則沒有錯誤。

但是這些錯誤被Yii注意到,如果我檢查ajax請求響應,我可以在firebug中看到它們。

所以如果所有的字段都是空的,由於3個錯誤將不會在數據庫中創建,但只會顯示一個(password_validation)。

如果任何機構有一個想法,歡迎您:)

對不起,我的英語近似

感謝您閱讀我,有一個美好的一天。

Michaël

+0

我建議你檢查你的自定義方法'dateField()'應用於生成的輸入字段的名稱。如果您的模型名稱是User,那麼字段名稱應該是'User [valid_from]'和'User [valid_until]'。這會讓AR類使用'$ this-> valid_from'和'$ this-> valid_until'進行驗證 –

回答

0

您在最後一條規則中將這些屬性標記爲「安全」。可能是這個原因。刪除該規則或爲其添加場景(通常屬性在「搜索」場景中聲明爲安全 - 例如,將'on'=>'search'元素添加到該規則)。