Сообщение об ошибке проверки электронной почты - CakePHP
Моя модель пользователя:
class User extends AppModel {
public $validate = array(
'username' => 'alphaNumeric',
'password' => 'notempty',
'confirmpassword' => 'notempty',
'group_id' => 'notempty',
'email' => array(
'rule' => 'email',
'message' => 'Please provide a valid email address.'
),
);
}
Моя регистрация пользователей:
<div class="users form">
<?php echo $this->Form->create('User'); ?>
<fieldset>
<legend><?php echo __('Register User'); ?></legend>
<?php
echo $this->Form->input('User.username');
echo $this->Form->input('User.password');
echo $this->Form->input('User.confirmpassword', array('type'=>'password', 'label'=>'Confirm password'));
echo $this->Form->input('User.group_id');
echo $this->Form->input('User.email');
?>
</fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
</div>
Действие Моя регистрация пользователя в контроллере:
public function register() {
if ($this->request->is('post')) {
...
//create mail for verification
$email = new CakeEmail();
...
$email->to($this->data['User']['email']);
$email->send($ms);
}
}
Доступ к /users/register. Когда я ввожу что-то вроде "asdfgh" в поле электронной почты, я получаю сообщение об ошибке CakePHP по умолчанию:
Invalid email: asdfgh
Error: An Internal Error Has Occurred.
Вместо сообщения об ошибке над полем электронной почты, говоря мне:
Please provide a valid email address.
Мой вопрос: должен ли он действительно вызывать действие в контроллере, когда входные данные пользователя недействительны? Есть ли способ вызвать действие в контроллере, только если входные данные пользователя верны?
1 ответ
Я нашел свой ответ! ^^
На самом деле проверка выполняется только перед методом "save()", а не перед вызовом действия в контроллере. Но я могу проверить пользовательский ввод в контроллере, используя:
if ( $this->User->validates() )
Переформулировка моего действия по регистрации пользователя в контроллере:
public function register() {
if ($this->request->is('post')) {
$this->User->set( $this->data );
if ( $this->User->validates() ) {
...
//create mail for verification
$email = new CakeEmail();
...
$email->to($this->data['User']['email']);
$email->send($ms);
}
}
}