如何在 cakephp 3.1 中使用带前缀的电子邮件模板?
How to use prefixed email templates in cakephp 3.1?
我使用的是 cakephp 3.1.6,我有一个 admin 前缀来分隔我的管理部分。使用这种方法,我为模板生成了这个文件夹结构:
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();
但是还是失败了
有什么方法可以更改电子邮件模板的路径吗?
我会回答我自己的问题,因为没有其他人这样做过。
问题中发布的代码实际上确实有效,但它有一个问题:它设置了一个路径,因此它只能与文本或电子邮件模板一起使用,不能同时与两者一起使用。
因此,更好的方法(以及更多 "cake 3" 方法)是使用 themes。这样你就可以分离模板、助手和单元格;对于您的管理员,public 页等
代码应该是这样的:
$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
│ └── ...
└── ...
我使用的是 cakephp 3.1.6,我有一个 admin 前缀来分隔我的管理部分。使用这种方法,我为模板生成了这个文件夹结构:
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();
但是还是失败了
有什么方法可以更改电子邮件模板的路径吗?
我会回答我自己的问题,因为没有其他人这样做过。
问题中发布的代码实际上确实有效,但它有一个问题:它设置了一个路径,因此它只能与文本或电子邮件模板一起使用,不能同时与两者一起使用。
因此,更好的方法(以及更多 "cake 3" 方法)是使用 themes。这样你就可以分离模板、助手和单元格;对于您的管理员,public 页等
代码应该是这样的:
$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
│ └── ...
└── ...