Описание
У меня есть простая форма на каждой странице моего сайта - один вход и кнопка отправки. Смысл в том, чтобы пользователь просто вводил свой адрес электронной почты и нажимал «отправить».
Это работает, если данные являются адресом электронной почты - но если это не правильный адрес электронной почты, он отправляет форму, страница перезагружается (или что-то еще), и вместо более конкретной модели появляется флэш-сообщение, а не действительный адрес электронной почты "ошибка.
Вопрос:
Итак, как мне использовать проверочное сообщение модели вместо общего сообщения контроллера?
Форма:
echo $this->Form->create('Email', array('class'=>'form1', 'url'=>'/emails/add', 'inputDefaults'=>array('label'=>false)));
echo $this->Form->input('Email.email');
echo $this->Form->end('SIGN-UP');
Функция «добавления» контроллера электронной почты (или метод?):
function add() {
if (!empty($this->data)) {
$this->Email->create();
if ($this->Email->save($this->data)) {
$this->Session->setFlash(__('The email address has been saved', true));
$this->redirect($this->referer());
} else {
$this->Session->setFlash(__('The email address could not be saved. Please, try again.', true));
$this->set('error', 'custom error here');
$this->redirect($this->referer());
}
}
}
И модель электронной почты:
class Email extends AppModel {
var $name = 'Email';
var $validate = array(
'email' => array(
'is_valid' => array( //named whatever we want
'rule' => 'notEmpty',
'rule' => array('email', true),
'message' => 'Please supply a valid email address.',
'last' => true //causes it to not check the next rule if this one fails
),
'is_unique' => array( //named whatever we want
'rule' => 'isUnique',
'message' => 'That email address is already in our database.'
)
),
);
}