2017-03-31 73 views
0

以下東西:laravel mailables - >在視圖呈現後替換標記

我從wordpress數據庫中讀取帖子。這個想法是這些職位充當主人。

E.g.我們有一個WordPress的職位與帖子內容:

Hi XX_USERNAME_XX, 

nice to meet you. 

XX_LARAVEL_CONTENT_XX 

thanks for your donation of XX_DONATION_AMOUNT_XX 

bye 

我現在要發送一個正常的laravel可郵寄,在發送出來的時候,做的替代品。現在,拉拉維爾的觀點通常充當主人。

在這種情況下

不過,我想WordPress的帖子內容是主,並插入laravel視圖到WordPress的內容(XX_LARAVEL_CONTENT_XX)。在這樣做的同時,替換附加的令牌(XX_DONATION_AMOUNT_XX)。

我如何在laravel mailable呈現之前做些什麼?例如在mailable的輸出被傳遞給郵件服務之前,我想掛鉤在我自己的過濾器中,從mailable獲取輸出並將其輸出到wordpress文章中。有什麼支持嗎?

回答

1

不太清楚爲什麼你選擇以這種方式構建你的觀點,但爲了達到這個目的,你可以在Mailable類中使用callbacks變量。他們將called upon the message已經從您的視圖組成後立即

Class MyMail extends Mailable 
{ 
    use Queueable, SerializesModels; 
    public $master; 
    publiс $placeholder = 'XX_LARAVEL_CONTENT_XX'; 

    public function __construct($master) 
    { 
     $this->master = $master; // 'BEFORE + XX_LARAVEL_CONTENT_XX + AFTER'; 
    } 

    public function build() 
    { 
     $this->callbacks[] = function ($message) { 
      $oldBody = $message->getBody(); 
      $newBody = str_replace($this->placeholder, $oldBody, $this->master); 
      $message->setBody($newBody); 
     }; 

     return $this->view('my-laravel-mail-view') // your normal message setup 
      ->to('[email protected]') 
      ->subject('Hello'); 
    } 
} 

如果要更換多個變量,記得str_replace支持數組作爲搜索和替換:

str_replace(['aa', 'bb'], ['AA', 'BB'], $subject); 
+0

我選擇的理由像這樣做是爲了讓客戶端創建WordPress中的所有電子郵件的內容,與所有來與WordPress的編輯器和內置功能的工具,他能夠做自己改變以後。如果你有更好的主意,請隨時分享 – Toskan