メールアドレスが一意であること、メールアドレスがメールとしてフォーマットされていることなどを確認するユーザーモデルでいくつかの検証があります。
特にログインフォームについては、メールフィールドに適切なメールアドレスが入力されていることを確認したいのですが、一意のルールを起動したくありません。一意のルールに '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 に認識させるにはどうすればよいですか。
また、ルールを設定解除しなければならなくなった場合、発火すべき場所で発火させるために再度設定する必要がありますか?それとも、設定解除はアクションの期間中のみ有効ですか?
ありがとう!