簡體   English   中英

laravel mailables->在呈現視圖后替換令牌

[英]laravel mailables -> replace tokens after view rendered

以下內容:

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

例如,我們有一個WordPress帖子,其中包含帖子內容:

Hi XX_USERNAME_XX,

nice to meet you.

XX_LARAVEL_CONTENT_XX

thanks for your donation of XX_DONATION_AMOUNT_XX

bye

我現在想發送一個普通的laravel可郵寄郵件,在寄出時進行替換。 現在,問題是laravel中的視圖通常充當主視圖。

但是,在這種情況下,我希望將wordpress發布內容作為主體,然后將laravel視圖插入wordpress內容(XX_LARAVEL_CONTENT_XX)。 並且在執行此操作時,請替換其他令牌(XX_DONATION_AMOUNT_XX)。

在laravel mailable呈現之前,我該怎么做? 例如,在將mailable的輸出傳遞到郵件服務之前,我想鈎住自己的過濾器,從mailable中獲取輸出,然后將該輸出放入wordpress帖子中。 有什么支持嗎?

我不太清楚為什么您選擇以這種方式構成視圖,但是為了實現這種方式,可以使用Mailable類中的callbacks變量。 從您的觀點出發,消息將立即被調用

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('test@example.com')
            ->subject('Hello');
    }
}

而且,如果要替換多個變量,請記住str_replace支持數組作為搜索和替換:

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

暫無
暫無

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

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