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