我一直在根据您从php artisan vendor:publish --tag=laravel-notifications发布的文件构建一个邮件模板

我已经成功地编辑了消息布局,使其包含了一条Power-by消息,但是这篇文章没有使用变量.

现在,我被困在试图添加一个唯一的取消订阅URL,就在上面(见下图),这个通电,但我无法传递它"向上"到供应商模板message.blade.php

这是我的toMail()函数的一部分,它最终被一个$user->notify(new Reminder(..))函数调用

return (new MailMessage())
    ->markdown('emails.reminder', ['unsubscribe_url' => 'custom_url_here'])

这是编辑过的message.blade.php文件

<x-mail::layout>

{{-- Body --}}
{{ $slot }}

{{-- Subcopy --}}
@isset($subcopy)
<x-slot:subcopy>
    <x-mail::subcopy>
        {{ $subcopy }}
    </x-mail::subcopy>
</x-slot:subcopy>
@endisset

{{-- Footer --}}
<x-slot:footer>

    <x-mail::footer>
        <a href="{{ $unsubscribe_url }}">Unsubscribe here.</a>
    </x-mail::footer>

    <x-mail::powered-by />

    <x-mail::footer>
        © {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.')
    </x-mail::footer>
</x-slot:footer>
</x-mail::layout>

我曾try 使用扩展、yield 、包含等函数.emails.reminderBlade 式服务器模板内部

我还try 了不同的方法来访问供应商模板,但都没有成功.

@extends('vendor.mail.html.message',[
    'unsubscribe_url' => $unsubscribe_url,
])

@yield('vendor.mail.html.message',[
    'unsubscribe_url' => $unsubscribe_url,
])

@include('vendor.mail.html.message',[
    'unsubscribe_url' => $unsubscribe_url,
])

@extends('x-mail::message',[
    'unsubscribe_url' => $unsubscribe_url,
])

@extends('x-slot:message',[
    'unsubscribe_url' => $unsubscribe_url,
])

@extends('x-mail::footer',[
    'unsubscribe_url' => $unsubscribe_url,
])

@extends('x-slot:footer',[
    'unsubscribe_url' => $unsubscribe_url,
])

@extends('mail::html.message',[
    'unsubscribe_url' => $unsubscribe_url,
])

@extends('mail::text.message',[
    'unsubscribe_url' => $unsubscribe_url,
])

上面提到的图片:

enter image description here

推荐答案

我让它变得更加困难,因为我不太理解邮件和模板.

在本例中,"将变量传递给更高层的模板"的方式是通过defining an extra region将您正在使用的模板中的文本粘贴到其中.

<!-- message.blade.php -->

<x-mail::layout>
    @isset($foo) // if the section is optional
        <x-mail::foo>
            {{ $foo }}
        </x-mail::foo>
    @endisset
</x-mail::layout>

并在模板中定义这个插槽,方法为slot:foo add传递你想要添加的数据,在本例中是unsubscribe的URL.

<!-- reminder.blade.php -->

<x-mail::message>
    <x-slot:foo>
        <a href="{{ $unsubscribe_url }}">Unsubscribe here.</a>
    </x-slot:foo>
</x-mail::message>

如果添加新区域,还需要将此文件foo.blade.php添加到mail/htmlmail/text文件夹

Laravel相关问答推荐

警告:构建Reaction App(VITE)后无法解码下载的字体警告

如何在自定义表单请求中获取错误验证数据

不能在 laravel 中使用控制器名称,必须使用命名空间

Laravel 在维护模式下显示自定义消息

Laravel/Eloquent:致命错误:在非对象上调用成员函数 connection()

即使上传了文件,Laravel Input::hasFile('image') 也会返回 false

如何在 NetBeans 中添加带有点 (blade.php) 的自定义文件扩展名?

磁盘 [视频] 没有配置的驱动程序

Eloquent 的集合方法,例如 only 或 except 返回一个空集合

如何使用 laravel eloquent 获得select count(*) group by

localhost 和stream_socket_enable_crypto():SSL 操作失败,代码为 1

Laravel 5.5 类型错误:传递给 Illuminate\Auth\EloquentUserProvider::validateCredentials() 的参数 1 必须是实例

在表单中添加一对多 - Backpack laravel

Laravel 判断约束违规

如何使用外部图像生成 html div 的 screenshot截图?

Laravel 同步错误

日期验证 - 如何本地化/翻译字符串今天和明天

Laravel Eloquent - 加入表时防止覆盖值

如何在 laravel 4 中删除文件

配置和测试 Laravel 任务调度