0

我正在使用 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();

但它仍然失败。

有什么方法可以更改电子邮件模板的路径吗?

4

1 回答 1

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
│   └── ...
└── ...
于 2016-01-19T00:00:17.670 回答