簡體   English   中英

Yii2:覆蓋第三方郵件視圖

[英]Yii2: Override 3rd party mail views

我們如何覆蓋第三方模塊/組件的郵件視圖文件?

假設一個模塊正在使用以下代碼發送電子郵件:

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

您可以在配置中覆蓋這兩個別名:

'aliases' => [
    '@myvendor/mymodule/mail/email-html' => '@app/views/mail/email-html',
    '@myvendor/mymodule/mail/email-text' => '@app/views/mail/email-text',
],

在模塊的郵件文件中配置並重寫$ viewPath屬性。

例:

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

首先,創建新的html和文本文件。 創建兩個文件。 創建兩個文件

  • 郵件/ 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 ..
        ],
   ],
    ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM