以下是我的规则方法:
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>
有些信息:
我的问题:
对于“valid_until”和“valid_from”,错误不会显示在HTML上。 如果我将“password_verification”清空,当我更改焦点时会出现错误(因为ajaxValidation onChange),但如果我将“valid_until”或“valid_from”清空,则没有错误。
但是Yii注意到了这些错误,如果我检查ajax请求响应,我可以在firebug中看到它们。
因此,如果所有字段都为空,则由于3个错误,在DB中不会创建任何字段,但只会显示一个(password_validation)。
如果有任何机构有想法,欢迎您:)
对不起我的近似英语
感谢您的阅读,祝您有个美好的一天。
迈克尔
答案 0 :(得分:0)
您在最后一条规则中将这些属性标记为“安全”。可能这就是原因。删除该规则或为其添加方案(通常在'搜索'方案中将属性声明为安全 - 例如,在该规则中添加'on'=&gt;'search'元素。)