В CakePHP 2.X для одного из моих действий с контроллером я пытаюсь отправить электронное письмо всем пользователям каждый раз, когда создается новая запись.Cakephp не перенаправляется после отправки электронной почты через CakeEmail
Обновлено с предложениями drmonkeyninja по:
// NewslettersContoller.php
public function add() {
if($this->request->is('post')) {
$this->Newsletter->create();
if($this->Newsletter->save($this->request->data)) {
$this->Session->setFlash(__('Your newsletter has been submited.'));
$this->redirect(array('action' => 'view', $this->Newsletter->id));
}
else {
$this->Session->setFlash(__('Unable to add your post.'));
return $this->redirect(array('action' => 'add'));
}
}
}
// Newsletter.php
public function afterSave($created, $options = []) {
parent::afterSave($created, $options);
if ($created === true) {
$newsletter = $this->findById($this->id);
// Get all users with an email address.
$emails = ClassRegistry::init('User')->find(
'list',
array(
'fields' => array(
'User.id',
'User.email'
),
'conditions' => array(
'User.email <>' => null
)
)
);
$Email = new CakeEmail('gmail');
$Email->from(array('[email protected]' => 'Caprock Portal'));
$Email->to($emails);
$Email->subject($newsletter['Newsletter']['title']);
$Email->message($newsletter['Newsletter']['content']);
try {
$Email->send();
} catch (Exception $exception) {
$this->log($exception);
}
}
}
Как вы можете видеть из фрагмента кода, я использую CakeEmail отправить каждому пользователю письмо, содержащее бюллетень, созданный в действии. К сожалению, по какой-то причине каждый раз, когда CakeEmail заканчивает отправку электронной почты, CakePHP игнорирует мой запрос на перенаправление и переходит к визуализации пустого представления (маршрут все еще добавляется). Я проверил, что это функция CakeEmail, комментируя ее и проверяя, что перенаправление начинает работать снова. Ничего не поймано в блоке try-catch.
Одно из моих предположений о причине этой проблемы состоит в том, что заголовки электронной почты вмешиваются в заголовки переадресации для моего действия. Я проверил сетевые запросы через мой браузер, но ничего не отправляется, кроме как из исходного запроса на отправку в функцию добавления.
удалите 'return' и проверьте. –
Пожалуйста, проверьте и сообщите, что произойдет? –
nop, ничего. Сохраняет пустой вид –