【问题标题】:Laravel: Set mail subject from mail blade templateLaravel:从邮件刀片模板设置邮件主题
【发布时间】:2021-09-02 17:59:22
【问题描述】:

在使用 Laravel 6 邮件功能时,我想在邮件的刀片模板中设置邮件主题。这对我来说似乎比在 Mail 类本身中更自然,因为维护邮件模板的人也应该能够自定义主题并使用模板变量。

我想要完成的示例:

@component('mail::subject')
Sample Message to {{ $user }}
@endcomponent

@component('mail::message')
# Sample Message

This is a sample message
@endcomponent

这是怎么做到的?

【问题讨论】:

  • 使用的模板只是邮件内容,与邮件主题无关

标签: laravel email


【解决方案1】:

我也为此苦苦挣扎。我花了一段时间才找到一个体面的解决方案,但它是:

可邮寄类:

class Mailing extends Mailable {

    use Queueable;
    use SerializesModels;

   ...

    public function build() {
        return $this
            ->markdown('emails.somemailing')
            ->with('setSubject', function($subject) {   // Use to be able to set the subject from within the markdown blade
                    $this->subject($subject);
                });
    }
}

然后在降价刀片中,您可以像这样调用setSubject

@php
$setSubject('Hooray, it works!');
@endphp

@component('mail::message')

...

@endcomponent

PS 也可以直接将 $this->subject 设置为闭包:

->with('setSubject', Closure::fromCallable([$this, 'subject']));

【讨论】:

    【解决方案2】:

    在 APP 内 - 邮件

    添加这个

    public function build()
    {
        return $this->markdown('emails.user')->subject('here subject');
    }
    

    【讨论】:

    • 是的,这可行,但我们仍然需要为主题和正文使用单独的文件。我想更改刀片模板中的主题,以便无法使用 PHP 的人仍然可以更改电子邮件主题
    猜你喜欢
    • 2019-05-27
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 2021-04-24
    • 2013-04-29
    相关资源
    最近更新 更多