这是我的规则方法:
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)。
如果任何人有想法,欢迎您:)
对不起我的大概英语
感谢您阅读我,祝您有美好的一天。
迈克尔