以下事项:
我从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 mailable,当发送时,替换。现在的问题是,laravel中的观点通常充当主人。
在这种情况下,我希望wordpress发布内容为主,并将laravel视图插入wordpress内容(XX_LARAVEL_CONTENT_XX)。在执行此操作时,请替换其他令牌(XX_DONATION_AMOUNT_XX)。
我可以在渲染laravel mailable之前做些什么吗?例如在将mailable的输出传递给邮件服务之前,我想挂钩我自己的过滤器,从mailable获取输出并将该输出放入wordpress帖子。有什么东西支持这个吗?
答案 0 :(得分: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('test@example.com')
->subject('Hello');
}
}
如果您想要替换多个变量,请记住str_replace支持数组作为搜索和替换:
str_replace(['aa', 'bb'], ['AA', 'BB'], $subject);