2

如 config/mail.php 中所述,默认的 markdown 邮件文件夹在 views/vendor/mail

'markdown' => [
    'theme' => 'default',

    'paths' => [
        resource_path('views/vendor/mail'),
    ],
],

我在views/templates/1/mail. 更改配置中的路径,这可以正常工作。

如何同时使用默认供应商/邮件文件夹以及我的新模板来处理不同的通知?

将我的路径添加到邮件配置类型的工作,但这更多的是向当前模板添加其他文件,并要求所有文件在每个文件夹中都有唯一的名称。

我当然可以将每个刀片文件中的整个模板路径命名为 HTML 文件夹,但是有没有更优雅的方法来连接mail::xxxx助手?

@component('templates/1/mail/html.layout')
4

1 回答 1

2

要使用mail::button类型格式,您必须为该关键字创建提示,这在 Laravel 文档中找不到。

作为替代解决方案,这就是我为 Laravel 通知使用多种布局的方式:

  1. 克隆您现有的邮件(项目/资源/视图/供应商/邮件)文件夹并自定义新布局。在邮件文件夹中,您可以自定义完整的设计。此文件夹下的文件提供对您的电子邮件正文的块级更改。

  2. 接下来,您必须在通知(项目/资源/视图/供应商/通知)下克隆email.blade.php文件,并根据需要对其进行自定义。这个单一文件是您的电子邮件的骨架。

  3. 修改您的电子邮件通知以添加view()markdown()根据您的需要。在通知的“toMail”函数中,链接以下行:

    ->view('vendor.notifications.custom_layout')
    

所以,它看起来像这样:

return (new MailMessage)
            ->subject(__('emails/registration.subject'))
            ->greeting(__('emails/registration.failed.greetings', ['recipient' => $this->learner->username]))
            ->line(__('emails/registration.line_1'))
            ->line(__('emails/registration.line_2', ['username' => $this->username]))
            ->action(__('action.log_in'), "https://{$loginURL}")
            ->view('vendor.notifications.custom_layout');
  1. 所有文件命名约定将从 更改mail::messagevendor.custom_layout.html.message

这是您的自定义文件(在通知文件夹下)的样子:

@component('vendor.custom_layout.html.message')
{{-- Greeting --}}
@if (! empty($greeting))
# {{ $greeting }}
@else
@if ($level == 'error')
# @lang('Whoops!')
@else
# @lang('Hello!')
@endif
@endif

{{-- Intro Lines --}}
@foreach ($introLines as $line)
{!! $line !!}

@endforeach

{{-- Action Button --}}
@isset($actionText)
@component('vendor.custom_layout.html.button', ['url' => $actionUrl])
    {{ $actionText }}
@endcomponent
@endisset

{{-- Outro Lines --}}
@foreach ($outroLines as $line)
{!! $line !!}
@endforeach

{{-- Salutation --}}
@if (! empty($salutation))
{{ $salutation }}
@else
{{ __('label.thank_you') }}<br>{{ __('label.xyz_team') }}
@endif

{{-- Subcopy --}}
@isset($actionText)
@component('vendor.custom_layout.html.subcopy')
{!! __('emails/common.footer_notice', ['actionText' => $actionText]) !!}
[{{ $actionUrl }}]({!! $actionUrl !!})
@endcomponent
@endisset
@endcomponent

这些是为您的电子邮件创建自定义视图所需的唯一更改。

于 2020-02-11T09:47:50.797 回答