Yii2: переопределить сторонние почтовые представления - PullRequest
0 голосов
/ 12 марта 2019

Как переопределить файлы просмотра почты модуля / компонента стороннего производителя?

Предположим, что модуль использует следующий код для отправки электронного письма:

Yii::$app->mailer->compose([
    'html'  => '@myvendor/mymodule/mail/email-html',
    'text'  => '@myvendor/mymodule/mail/email-text',
])
    ->setTo([$email => $name])
    ->setSubject('Hi');
    ->send();

Как бы мыпереопределить эти отдельные представления электронной почты @myvendor/mymodule/mail/email-html и @myvendor/mymodule/mail/email-text?

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Вы можете переопределить эти два псевдонима в вашей конфигурации:

'aliases' => [
    '@myvendor/mymodule/mail/email-html' => '@app/views/mail/email-html',
    '@myvendor/mymodule/mail/email-text' => '@app/views/mail/email-text',
],
0 голосов
/ 12 марта 2019

Настройте и переписайте свойство $ viewPath в почтовом файле в модуле.

пример:

 public $viewPath = '@myvendor/mymodule/mail';

Сначала создайте новые HTML и текстовые файлы. Создайте оба файла. Создать оба файла .

  • mail / newHTML
  • почта / trxt / NewTEXT

       $mailer = Yii::$app->mailer;
       $mailer->viewPath = $this->viewPath;
       $mailer->getView()->theme = Yii::$app->view->theme;
        return $mailer->compose(['html' => $view, 'text' => 'text/' . $view], $params)
            ->setTo($to)
            ->setFrom($this->sender)
            ->setSubject($subject)
            ->send();
    

Если вы хотите изменить путь только для одного: Использовать перед кодом:

Yii :: $ app-> mailer-> viewPath = '@ myvendor / newPath';

Yii::$app->mailer->compose([ #code...

Если файл VIEW: нужно только изменить имя файла HTML и TEXT, (оба)

Обновление:

Может быть переопределено или через компонент и ...

//new file: path\widgets\Mailer.php
namespace path\widgets;
use yourpath\Mailer as DefaultMailer;  //path:mymodule/mail
class Mailer extends DefaultMailer{
    public $viewPath = '@myvendor/mymodule/mail';
    public function changeviewPath($_path){
        $this->viewPath; = $_path;
    }
}

// для использования. Изменения

use path\widgets\Maile;  // New path
// Use before the usual code
$mailer->changeviewPath('newpath\mail');

Для изменения адреса файлов в компоненте. В зависимости от вашего модуля электронной почты, он варьируется

пример:

'modules' => [
        'myMudul' => [
            'class' => 'PathModule\Module',
            'mailer' => [
                #code ..
        ],
   ],
    ...
...