Laravel markdown 邮件中的动态 header 和页脚
Dynamic header and footer in Laravel markdown mail
根据文档,我使用 markdown mailables 创建了自己的邮件模板:https://laravel.com/docs/9.x/mail#generating-markdown-mailables
关键是我需要动态地自定义 header 和页脚中的信息(在每种情况下都会有所不同)。我在 toMail 函数中传递的信息仅在我的自定义模板范围内可用 neworder.blade.php:
public function toMail($notifiable){
$from = 'no-reply.'.$this->subdomain.'@'.env('APP_DOMAIN');
return (new MailMessage)
->from($from)
->markdown('emails.neworder',
[
'name'=>$this->name,
'order'=> $this->order,
'emailbody'=> $this->emailbody,
'headertitle' => $this->headertitle,
'footertext' => $this->footertext
]
);
}
按照相同的文档,我导出了 Markdown 邮件组件以使用此命令自定义它们:
php artisan vendor:publish --tag=laravel-mail
从这里我可以自定义 /vendor/mail/html/themes/header.blade.php 等文件,其中的修改会有效影响 header。我想不通的是 如何传递我可以在这些文件范围内使用的变量,就像在 /views/email/neworder.blade.php 中一样
我需要在相应的部分中包含 headertitle
和 footertext
的值。
没有找到更好的解决方案,我最终被迫使用会话变量,以便我可以在页眉和页脚模板中使用它们。
设置会话变量 你想在 Http/Notifications/yourNotificationTemplate 中使用 footer/header。php:
public function toMail($notifiable){
session(['headertitle' => $this->headertitle]);
session(['footertext' => $this->footertext]);
$from = 'no-reply.'.$this->subdomain.'@'.env('APP_DOMAIN');
return (new MailMessage)
->from($from)
->markdown('emails.neworder',
[
'name'=>$this->name,
'order'=> $this->order,
'emailbody'=> $this->emailbody,
]
);
}
然后您就可以在您的模板中的任何地方使用它。 F.E 在 /views/vendor/mail/thml/header.blade.php:
@php ($headertext = session('headertitle'))
<tr>
<td class="header">
@if (null!==(session('headertext')))
<h1>{{$headertext}}</h1>
@else
{{ $slot }}
@endif
</td>
</tr>
根据文档,我使用 markdown mailables 创建了自己的邮件模板:https://laravel.com/docs/9.x/mail#generating-markdown-mailables
关键是我需要动态地自定义 header 和页脚中的信息(在每种情况下都会有所不同)。我在 toMail 函数中传递的信息仅在我的自定义模板范围内可用 neworder.blade.php:
public function toMail($notifiable){
$from = 'no-reply.'.$this->subdomain.'@'.env('APP_DOMAIN');
return (new MailMessage)
->from($from)
->markdown('emails.neworder',
[
'name'=>$this->name,
'order'=> $this->order,
'emailbody'=> $this->emailbody,
'headertitle' => $this->headertitle,
'footertext' => $this->footertext
]
);
}
按照相同的文档,我导出了 Markdown 邮件组件以使用此命令自定义它们:
php artisan vendor:publish --tag=laravel-mail
从这里我可以自定义 /vendor/mail/html/themes/header.blade.php 等文件,其中的修改会有效影响 header。我想不通的是 如何传递我可以在这些文件范围内使用的变量,就像在 /views/email/neworder.blade.php 中一样
我需要在相应的部分中包含 headertitle
和 footertext
的值。
没有找到更好的解决方案,我最终被迫使用会话变量,以便我可以在页眉和页脚模板中使用它们。
设置会话变量 你想在 Http/Notifications/yourNotificationTemplate 中使用 footer/header。php:
public function toMail($notifiable){ session(['headertitle' => $this->headertitle]); session(['footertext' => $this->footertext]); $from = 'no-reply.'.$this->subdomain.'@'.env('APP_DOMAIN'); return (new MailMessage) ->from($from) ->markdown('emails.neworder', [ 'name'=>$this->name, 'order'=> $this->order, 'emailbody'=> $this->emailbody, ] ); }
然后您就可以在您的模板中的任何地方使用它。 F.E 在 /views/vendor/mail/thml/header.blade.php:
@php ($headertext = session('headertitle'))
<tr>
<td class="header">
@if (null!==(session('headertext')))
<h1>{{$headertext}}</h1>
@else
{{ $slot }}
@endif
</td>
</tr>