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 是一种服装方法。这不是问题的来源(一位同事使用它的方式与我使用它的方式相同,但没有这个问题)。

我的问题:

对于“valid_until”和“valid_from”,错误不会显示在 HTML 上。如果我让“password_verification”为空,当我改变焦点时会出现错误(因为 ajaxValidation onChange),但如果我让“valid_until”或“valid_from”为空,则不会出现错误。

但是这些错误被 Yii 注意到了,如果我检查 ajax 请求响应,我可以在 firebug 中看到它们。

因此,如果所有字段都为空,则不会因为 3 个错误而在 DB 中创建任何内容,但只会显示一个(password_validation)。

如果任何人有想法,欢迎您:)

对不起我的大概英语

感谢您阅读我,祝您有美好的一天。

迈克尔

4

1 回答 1

0

您在最后一条规则中将这些属性标记为“安全”。大概就是这个原因吧。删除该规则或为其添加一个场景(通常属性在“搜索”场景中被声明为安全 - 例如,将“on”=>“搜索”元素添加到该规则)。

于 2012-12-20T18:23:07.497 回答