覆盖cakePHP3电子邮件

时间:2018-03-01 16:57:04

标签: email cakephp-3.0 cakeemail

我已经构建了一个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模板中的相同内容。

创建用于保存自己的电子邮件的UI不是问题。但问题是我真的不知道如何向cakePHP3邮件提供覆盖的内容。我试过设置

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

但这没有帮助。邮件未到达邮箱,因为正文是空的。

感谢。

1 个答案:

答案 0 :(得分:1)

我想我会选择这样的事情:

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

然后在新order_created_custom.ctp中输出$content。这使您可以选择基于$order对内容进行一些文本替换,也可以使用标准的称呼或签名。