我正在使用cakephp 3.1.6并且我有一个管理员前缀来分隔我的管理部分。使用这种方法,我为模板生成了这个文件夹结构:
src/Template
├── Admin
│ ├── Element
│ │ └── ...
│ ├── Email
│ │ └── ...
│ ├── Layout
│ │ └── ...
│ └── ...
├── Element
│ └── ...
├── Email
│ └── ...
├── Layout
│ └── ...
└── ...
适用于普通模板,但不适用于电子邮件模板。 Cakephp正试图在默认位置找到电子邮件模板,即src/Template/Email
我尝试使用viewBuilder
设置路径,如下所示:
$email = new Email('default');
$email->viewBuilder()->layoutPath(APP . "Template" . DS . "Admin")
->templatePath(APP . "Template" . DS . "Admin")
->build();
$email->template('forgot_password', 'default')
->to($user->email, $user->nick_name)
->subject('Reset password')
->send();
但它仍然失败。
有没有办法更改电子邮件模板的路径?
答案 0 :(得分:0)
我会回答我自己的问题,因为没有其他人这样做过。
问题中发布的代码确实有效,但它有一个问题:它设置了一个路径,因此它只能用于文本或电子邮件模板,而不是两者。
因此,更好的方法(以及更多"蛋糕3"一个)将使用themes。这样您就可以分离模板,帮助器和单元格;适用于您的管理员,公共页面等。
代码将是这样的:
$email = new Email('default');
$email->template("my_template", "my_layout")
->theme("AdminDefaultTheme")
->emailFormat('both')
->to("someuser@localhost.dev", "Some User")
->subject('Testing emails')
->send();
并且文件夹结构将是这样的:
├── plugins // Your admin templates
│ └── AdminDefaultTheme
│ └── Template
│ ├── Email
│ │ ├── html
│ │ │ └── my_template.ctp
│ │ └── text
│ │ └── my_template.ctp
│ └── Layout
│ └── Email
│ ├── html
| | └── my_layout.ctp
│ └── text
| └── my_layout.ctp
├── src // Your app code
│ ├── Controller
│ └── ...
└── ...