Уведомления Laravel передают переменную из шаблона в опубликованный шаблон поставщика

Я создаю шаблон письма на основе опубликованных файлов, которые вы получаете php artisan vendor:publish --tag=laravel-notifications

И я успешно отредактировал макет сообщения, включив в него сообщение Powered 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>

Я пытался использовать такие функции, как расширения, выход, включение... внутри шаблона лезвия emails.reminder.

Также пробовал разные способы обращения к шаблону поставщика, но безуспешно.

@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,
])

Изображение, как указано выше:

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
0
102
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я делал это намного сложнее, чем следовало бы, потому что не совсем разбирался в письмах и шаблонах.

В этом случае способ «передачи переменных в шаблон более высокого уровня» message.blade.php заключается в простом определении дополнительной области, в которую вставляется текст из используемого вами шаблона.

<!-- 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, передавая любые данные, которые вы хотите туда добавить, в данном случае 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/html и mail/text.

Другие вопросы по теме