3

これが私のルールの方法です:

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)のみが表示されます。

誰かがアイデアを持っているなら、どういたしまして:)

おおよその英語でごめんなさい

私を読んでくれてありがとう、良い一日を。

ミカエル

4

1 に答える 1

0

これらの属性は、最後のルールで「安全」とマークされています。おそらくそれが理由です。そのルールを削除するか、シナリオを追加します (通常、属性は「検索」シナリオで安全であると宣言されます。たとえば、そのルールに「on」=​​>「検索」要素を追加します)。

于 2012-12-20T18:23:07.497 に答える