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

誰もそれをしなかったので、私は自分の質問に答えます。

質問に投稿されたコードは実際には機能しますが、問題があります.1つのパスを設定するため、両方ではなくテキストまたは電子メールテンプレートでのみ使用できます.

したがって、より良いアプローチ (およびより「ケーキ 3」なアプローチ) は、テーマを使用することになります。このようにして、テンプレート、ヘルパー、およびセルを分離できます。管理者、公開ページなどに。

コードは次のようになります。

$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 に答える