Как да персонализирате шаблони за имейл с уведомление (заглавие и долен колонтитул)

Добре, затова се натъкнах на този проблем с настройката на имейл шаблон за моето приложение Laravel 5.4. Това беше имейл „Добре дошли“, използвайки стандартния шаблон Laravel. Предизвикателството беше да промените заглавката и долната част на шаблона.

Всички ние се опитваме да прочетем документацията възможно най-бързо и ако това не работи, след пълни 3 минути от прочитане на документацията, ще преминем към stackoverflow или laracasts или друг форум, очаквайки „копиране и поставяне“ готов код ,

Нещата са лесни, ако просто искате да промените текстовото съобщение и имате много примери как да го направите, като използвате компонентите на пощата. Въпреки това не намерих никакви отговори за промяна на заглавието и долния колонтитул по подразбиране.

елементи

Laravel 5.4 представи налични компоненти. Можете да прочетете за това тук.



    {{$ slot}}

Това би бил един компонент за предупреждение, който в основата си е шаблон за острие. Тогава {{$ slot}} ще бъде променлива / място за пускане на съдържание от друг шаблон / компонент.

@component ( "Сигнал")
     Ами!  Нещо се обърка!
@endcomponent

Така е. Това ще доведе до това

     Ами! Нещо се обърка!

Публикувай Vendor Publish

Първоначално Laravel ще използва техните компоненти, скрити в сърцевината на рамката, които можете да експортирате, като правите

php продавач на занаятчии: публикуване --tag = laravel-mail

Той ще създаде папки и папки за маркиране във вашата папка ресурси / изглед / доставчик. Вътре ще намерите компонент като оформление или заглавка и т.н.

Създаване на известие

Това, което искате да направите, е или да създадете известие, събитие или клас по пощата, за да освободите имейл, когато нещо се случи.

Реших да отида с известие. Когато създавате всяко известие (Можете да прочетете повече за това как да създадете известие чрез artisan), ще получите клас като този:

пространство за имена Приложения \ Известия;
използвайте Illuminate \ Bus \ Queueable;
използвайте Illuminate \ Notifications \ Notification;
използвайте Illuminate \ Contracts \ Queue \ ShouldQueue;
използвайте Illuminate \ Известия \ Съобщения \ MailMessage;
клас UserRegistered разширява известието
{
    използвайте Queueable;
/ **
     * недокументирана променлива на класа
     *
     * @var низ
     ** /
    обществен $ потребител;
/ **
     * Създайте нов екземпляр за известие.
     *
     * @return void
     * /
    обществена функция __construct ($ потребител)
    {
        $ this-> user = $ user;
    }
/ **
     * Вземете каналите за доставка на известието.
     *
     * @param смеси $ notifiable
     * @return масив
     * /
    обществена функция чрез ($ notifiable)
    {
        връщане ['поща'];
    }
/ **
     * Вземете поща представяне на известието.
     *
     * @param смеси $ notifiable
     * @urnurn \ Осветяване \ Известия \ Съобщения \ MailMessage
     * /
    обществена функция до поща ($ notifiable)
    {
        връщане (нова MailMessage)
            -> от ('info@somasures-it-wont-work.com ',' Администратор ')
            -> тема („Добре дошли в портала“)
            -> markdown ('mail.welcome.index', ['user' => $ this-> user]);
    }
/ **
     * Получете представяне на масив на известието.
     *
     * @param смеси $ notifiable
     * @return масив
     * /
    обществена функция заArray ($ notifiable)
    {
        връщане [
            //
        ];
    }
}

Тук обърнете внимание на метода toMail, както и на конструктора на класа, защото ние ще му предадем обект. Също така имайте предвид, че използваме

-> евтино ( "some.blade.php ');

Следващата стъпка е настоящото известие да работи. Някъде във вашия RegisterController може да искате да извикате това (без да навлизате в начина, по който ще го изпълнявате, нито синхронизирайте, нито на опашка ...). Не забравяйте да включите пространството от имена на известието в горната част.

$ user = Потребител :: create ([
            'name' => $ data ['name'],
            'имейл' => $ data ['имейл'],
            'lastname' => $ data ['lastname'],
            'password' => bcrypt ($ data ['password']),
        ]);
$ user-> известяване (нов UserRegistered ($ потребител));

Защо отивам толкова дълбоко? Ами защото също искам да ви покажа как да прехвърляте данните си в шаблона на имейла.

След това можете да отидете на ресурси / изгледи / поща / добре дошли / index.blade.php (може да бъде всяка папка и име на файл, които искате) и да поставите това:

@component ( "поща :: оформление")
    {{- Заглавие -}}
    @slot ( "глава")
        @component ('mail :: header', ['url' => config ('app.url')])
            Заглавие на заглавката
        @endcomponent
    @endslot
{{- Тяло -}}
    Това е основното ни съобщение {{$ user}}
{{- Подкопие -}}
    @isset ($ subcopy)
        @slot ( "subcopy)
            @component ( "поща :: subcopy")
                {{$ subcopy}}
            @endcomponent
        @endslot
    @endisset
{{- Footer -}}
    @slot ( "долния")
        @component ( "поща :: долния")
            © {{date ('Y')}} {{config ('app.name')}}. Супер ХОТЕЛ!
        @endcomponent
    @endslot
@endcomponent

Сега можете лесно да добавите всяко изображение в заглавката си или да промените връзката вътре в долния колонтитул и т.н.

Надявам се това да помогне.

Последвай ме в Туйтър
Добавете ме в LinkedIn