【问题标题】:Email template not using themed version电子邮件模板未使用主题版本
【发布时间】:2013-05-10 11:42:42
【问题描述】:

我正在使用 CakePHP 1.3 和documentation 中描述的内置电子邮件功能。我有位于 app/views/elements/email/html/reservation.ctp 中的模板的 html 版本,它按预期工作。

$this->Email->template = 'reservation'; // no '.ctp'

我也有一个主题设置,并且大多数主题文件都正确地覆盖了默认文件。我的问题是从主题站点调用时未使用主题电子邮件模板,它仍在使用默认路径中的电子邮件模板文件。

默认在:app/views/elements/email/html/reservation.ctp

主题位于:app/views/themed/myTheme/elements/email/html/reservation.ctp

电子邮件模板分配是否应该自动使用主题而不需要硬编码路径,还是有其他解决方案?其他人有这个问题吗?

【问题讨论】:

  • 您是从控制器内部发送电子邮件吗?如果是这样,view 类是否设置为Theme?电子邮件组件将使用与控制器相同的视图类,并且应该也使用相同的主题:参见源代码here。附带说明:您正在从事的项目是 项目吗? CakePHP 1.3 真的变老了,并且在 CakePHP 2.x 中进行了很多的改进(也在主题上)
  • 是的,视图在 AppController 中设置为主题。我看到了这个问题。我根据 AppController beforeRender 函数中的 url 设置主题。发送电子邮件永远不会调用 beforeRender 函数,因此永远不会设置主题。创建了一个新函数来设置主题,然后我在 beforeRender 或根据需要调用该函数。感谢您的评论,帮助我澄清了问题。
  • 希望我将其发布为答案?

标签: cakephp cakephp-1.3


【解决方案1】:

当你想创建电子邮件模板时在 cakephp 中。假设我们要创建一个 Html 电子邮件。并配置了电子邮件配置。

视图[文件结构]:

1) 带有变量的内容电子邮件应位于 View/Emails/html [reservation.ctp]
2) 您的模板应位于 View/Layouts/Emails/html [default.ctp 或您制作的任何新模板]

控制器:

注意:有些人认为当你写一个动作(在控制器中)时,你必须为它写一个视图。在这种情况下(用于发送电子邮件)是完全错误的。仅当您想显示结果是哪个电子邮件发送成功与否时才可以。

让我们说 ReserveController ;) 和 sendReservationEmail

function sendReservationEmail( $to, $from,$subject ,$template, $variables=array()){

        $Email = new CakeEmail();
        $Email->config('smtp')
            ->viewVars($variables) 
            ->emailFormat('html')
            ->template($template['page'], $template['layout'])  //'reservation', 'default'
            ->from($from)                                      //'me@example.com' => 'My Site'    
            ->to($to)                                          //'you@example.com'
            ->subject($subject) //'Resevation'
            ->send();       
    }

查看(查看/电子邮件/html/reservation.ctp):

Dear $this->viewVars['name'];

Welcome to our restaurant .....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多