У меня есть простая функция отмены подписки в моем неподписанном контроллере.
if ($this->Unsubscribe->save($this->data['Unsubscribes'])) {
// success
$this->Session->setFlash('Your email has been unsubscribed!');
$this->redirect('/unsubscribes/unsubscribe');
} else {
// error
$this->Session->setFlash('There was an error!');
$this->redirect('/unsubscribes/unsubscribe');
}
Вот проблема. Я хочу установить адрес электронной почты в базе данных как уникальный. Поэтому, если кто-то вводит адрес электронной почты несколько раз (или он уже есть в нашем списке отписки), мы не заполняем базу данных дубликатами записей. Однако я хочу, чтобы посетитель знал, что он был добавлен в базу данных (поэтому он знает, что он отписался).
Есть ли способ обнаружить ошибку ввода Duplicate от контроллера, чтобы я мог приравнять это к успеху? Предостережение: я не хочу создавать расширенную app_model. Есть идеи? Это можно сделать? Как лучше всего это сделать?
РЕШЕНИЕ: Вот окончательное решение, которое я реализовал. Я добавил проверку (как предложено в выбранном ответе ниже) и обновил свой контроллер следующим образом:
// error
if(isset($this->Unsubscribe->validationErrors['email'])){
$error = 'Your email has been unsubscribed!';
} else {
$error = 'Something went wrong. Please try again.';
}
$this->Session->setFlash($error);
$this->redirect('/unsubscribes/unsubscribe');