CakePHP, как передать данные об ошибках из модели обратно в контроллер - PullRequest
2 голосов
/ 22 сентября 2011

В некоторых особых случаях, когда недостаточно просто зарегистрировать ошибку, я хотел бы передать массив ошибок или пользовательскую строку ошибок из модели вызывающему контроллеру, чтобы отправить эти данные мне по электронной почте.

Я думал о том, чтобы просто отправить электронное письмо от самой Модели, но где-то читал, что это злит богов лучших практик MVC. Я посмотрел вокруг CakePHP API и не нашел ничего похожего на то, что мне нужно, поэтому я прошу здесь посмотреть, пропустил ли я что-нибудь.

Редактировать: я делаю некоторую специальную обработку в методе beforeSave ().

Спасибо! Jason

1 Ответ

3 голосов
/ 22 сентября 2011

Ха-ха, в будущем - в CakePHP 2.0 - класс электронной почты будет гражданином первого класса, а не компонентом.

Поэтому я бы не стал беспокоиться о гневеБоги MVC, отправляя электронное письмо от (божьих запретов) моделей или оболочек или других полезных мест.

Вам действительно нужно прыгнуть через несколько обручей:

// we will need a controller, so lets make one:
App::import('Core', 'Controller');
$controller =& new Controller();
// lets grab the email component
App::import('Component', 'Email');
$email =& new EmailComponent();
// give it the reference to the controller
$email->initialize($controller);
// off we go...
$email->from     = 'Name <noreply@example.com>';
$email->replyTo  = 'noreply@example.com';
$email->sendAs   = $format;
$email->to       = $destination;
$email->subject  = $subject;
// oh, this is why we needed the controller
$email->template = $template;
$controller->set(compact('items', 'subject'));
// done.
$sent = $email->send();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...