要使用mail::button
类型格式,您必须为该关键字创建提示,这在 Laravel 文档中找不到。
作为替代解决方案,这就是我为 Laravel 通知使用多种布局的方式:
克隆您现有的邮件(项目/资源/视图/供应商/邮件)文件夹并自定义新布局。在邮件文件夹中,您可以自定义完整的设计。此文件夹下的文件提供对您的电子邮件正文的块级更改。
接下来,您必须在通知(项目/资源/视图/供应商/通知)下克隆email.blade.php文件,并根据需要对其进行自定义。这个单一文件是您的电子邮件的骨架。
修改您的电子邮件通知以添加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');
- 所有文件命名约定将从 更改
mail::message
为vendor.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
这些是为您的电子邮件创建自定义视图所需的唯一更改。