Yii验证:不显示某些错误

时间:2012-12-18 14:15:40

标签: validation yii yii-validation

以下是我的规则方法:

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)。

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

对不起我的近似英语

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

迈克尔

1 个答案:

答案 0 :(得分:0)

您在最后一条规则中将这些属性标记为“安全”。可能这就是原因。删除该规则或为其添加方案(通常在'搜索'方案中将属性声明为安全 - 例如,在该规则中添加'on'=&gt;'search'元素。)