Переопределить содержимое электронных писем cakePHP3

Я создал приложение cakePHP3 и ищу советы по поводу следующей ситуации. Конфигурация электронной почты настраивается следующим образом, чтобы отправлять почту всякий раз, когда создается новый заказ.

public function orderCreated($order, array $attachments = [])
    {
        $email = $this
            ->locale($order->customer->language)
            ->to($order->customer->email)
            ->from(Configure::read('Webshop.email'), Configure::read('Webshop.name'))
            ->subject(__('Confirmation of your order {0}', $order->nr))
            ->template('orders' . DS . 'order_created')
            ->set(['order' => $order])
            ->attachments($attachments);

        return $email;
    }

Прекрасно работал целую вечность, но я хотел бы добавить некоторые новые функциональные возможности для этой конкретной электронной почты (и других). Администраторы должны иметь возможность переопределять содержимое шаблона orders / order_created.ctp, если они этого хотят, чтобы они могли сами определять содержимое этого электронного письма. Таким образом, они не должны полагаться на тот же контент в шаблоне order_created.ctp, который я предоставил.

Создание пользовательского интерфейса для сохранения своих электронных писем не является проблемой. Но проблема, которую я действительно не знаю, как я мог предоставить переопределенный контент почтовой программе cakePHP3. Я пробовал настройку

 ->template(false)
 ->message($new_content)

Но это не помогло. Сообщение не доходит до почтового ящика, потому что тело пусто.

Благодарю.

1 ответ

Решение

Я думаю, я бы пошел с чем-то вроде этого:

->template('orders' . DS . 'order_created_custom')
->set(['order' => $order, 'content' => $new_content])

А потом в новом order_created_custom.ctp вы бы вывели $content, Это дает вам возможность сделать некоторые замены текста на основе содержимого $orderа также, возможно, наличие таких вещей, как стандартное приветствие или подпись.

Другие вопросы по тегам