これが私のルールの方法です:
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はどちらもtrueです
- datefieldはcostumメソッドです。問題が発生する場所ではありません(同僚は、この問題なしで使用するのと同じように使用します)。
私の問題:
「valid_until」および「valid_from」の場合、エラーはHTMLに表示されません。「password_verification」を空にすると、フォーカスを変更するとエラーが表示されますが(ajaxValidation onChangeのため)、「valid_until」または「valid_from」を空にするとエラーは発生しません。
しかし、これらのエラーはYiiによって認識されます。ajaxリクエストの応答を確認すると、firebugでエラーを確認できます。
したがって、すべてのフィールドが空の場合、3つのエラーのためにDBに何も作成されませんが、1つ(password_validation)のみが表示されます。
誰かがアイデアを持っているなら、どういたしまして:)
おおよその英語でごめんなさい
私を読んでくれてありがとう、良い一日を。
ミカエル