CakeEmail ошибочно сообщает об отсутствии шаблона при использовании тем

У меня есть контроллер QuickContacts с действием add(), которое использует CakeEmail для отправки сообщения, например:

$Email = new CakeEmail();
$Email->from(array('noreply@xyz' => 'xyz'));
$Email->to(($this->isBranded) ? $this->brandedAccount['BrandedAccount']['contact_us_email'] : EMAIL_TO_MAIL_ADDRESS);
$Email->subject(EMAIL_QUICK_CONTACTS_SUBJECT);
$Email->emailFormat('html')->template('add', 'default');
$Email->message($this->request->data);

$Email->send();

Когда я пытаюсь отправить письмо, я получаю сообщение об ошибке, указывающее, что файл представления не существует:

Missing View
Error: The view for QuickContactsController::add() was not found.

Confirm you have created the file: Emails/html/add.ctp  in one of the following paths:

/var/www/html/mysite/app/View/Themed/Xyz/Emails/html/add.ctp

Я, конечно, могу подтвердить, что эти файлы существуют, но по какой-то причине CakePHP до сих пор не может их найти, и я не могу понять, почему это может происходить. Может кто-то указать мне верное направление?


person user1658296    schedule 14.12.2015    source источник
comment
Пожалуйста, опубликуйте точную версию CakePHP   -  person Inigo Flores    schedule 14.12.2015
comment
@InigoFlores Привет, это версия 2.7, я должен добавить, что я только что обновился до 2.7 с 1.3.   -  person user1658296    schedule 14.12.2015
comment
Просто чтобы исключить это, вы проверили, что /var/www/html/mysite/app/View/Themed/Xyz/Emails/html/add.ctp читается Apache?   -  person Inigo Flores    schedule 14.12.2015
comment
Кроме того, вам может потребоваться установить тему в CakeEmail - $Email->theme('xyz') как описано в Отправка электронных писем по шаблону.   -  person Inigo Flores    schedule 14.12.2015
comment
@InigoFlores Спасибо, настройка темы решила проблему! Я действительно не нашел, что это четко указано в документации.   -  person user1658296    schedule 14.12.2015
comment
Большой! Я превращу комментарий в ответ, чтобы его можно было одобрить.   -  person Inigo Flores    schedule 14.12.2015
comment
Сделайте одну вещь: создайте новый ctp-файл, который позволяет рассылку.ctp, поместите его в этот путь имя_проекта/приложение/View/Layouts/Emails/html, здесь поместите свой шаблон почтового формата и создайте другой файл ctp с тем же именем, что и предыдущее, в имя_проекта/приложение/ View/Emails/html , скопируйте код default.ctp, присутствующий в указанном выше пути, в этот. просто добавьте эту строку в свой контроллер $mail-›template('newsletter', 'newsletter'); а попробуй работает или нет?   -  person Shaddy    schedule 16.12.2015


Ответы (1)


Вы должны явно установить тему в CakeEmail:

$Email->theme('xyz') 

как описано в Cookboox 2.x: Отправка электронных писем по шаблону.

Сообщение об ошибке указывает вам правильный путь, но CakePHP ищет ваш файл в:

/app/Emails/html/add.ctp

Это может быть из-за ошибки.

person Inigo Flores    schedule 14.12.2015