2016-01-10 6 views
0

Я использую cakephp 3.1.6, и у меня есть префикс администратора для разделения моего раздела администрирования. Используя этот подход, я генерируемый эту структуру папок для шаблонов:Как использовать префиксные шаблоны электронной почты в cakephp 3.1?

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

Я отвечу на свой вопрос, поскольку никто другой не сделал этого.

Код, размещенный в вопросе, действительно работает, но он имеет проблему: он устанавливает один путь, поэтому его можно использовать только с текстом или шаблоном электронной почты, а не с обоими.

Итак, лучший подход (и более «торт 3») будет использовать themes. Таким образом вы можете отделить шаблоны, помощники и ячейки; для администраторов, общественных страниц и т.д.

код будет выглядеть примерно так:

$email = new Email('default'); 
$email->template("my_template", "my_layout") 
     ->theme("AdminDefaultTheme") 
     ->emailFormat('both') 
     ->to("[email protected]", "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 
│   └── ... 
└── ...