我在我的用户模型中有一些验证,检查电子邮件地址是唯一的,电子邮件地址被格式化为电子邮件等。
特别是对于登录表单,我确实想验证电子邮件字段是否填写了正确的电子邮件地址,但我不想触发唯一规则。我尝试将 'on' => 'create' 添加到唯一规则,但所有验证仍然会触发。
这就是我的模型中的内容:
public $validate = array (
'email' => array(
'email' => array(
'rule' => 'email',
'required' => 'create',
'allowEmpty' => 'false'
),
'isUnique' => array(
'rule' => 'isUnique',
'on' => 'create',
'message' => 'This email address already exists in the database. Would you like to login?'
)
);
这是在控制器的登录功能中:
if ($this->User->validates(array('fieldList' => array('email', 'password')))) {
// do login, redirect etc.
}
这是我的看法
<?php echo $this->Form->create('User'); ?>
<fieldset>
<legend><?php echo __('Please enter your email address and password'); ?></legend>
<?php
echo $this->Form->input('email');
echo $this->Form->input('password');
?>
</fieldset>
<?php echo $this->Form->end(__('Login')); ?>
我如何让 cakePHP 识别某些验证规则不应针对某些操作触发,而无需“取消设置”规则。
如果我最终不得不取消设置规则,我是否必须再次设置它以使其在应该触发的位置触发,或者取消设置仅在动作期间有效?
谢谢!