繁体   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