Laravel 10 extend & customize default email template 2023

webgods article cover image

От версия 8 нататък, Laravel въвежда по-структуриран начин за изпращане на имейли чрез така наречените Mailables. Вместо директно да подаваме view (обикновен Blade файл), вече се използва нов обект – Content. Той ни позволява да опишем по-прецизно съдържанието на имейла.

Какво се променя?

  • Преди: Подаваме view, който съдържа HTML кода на имейла.

  • Сега: Използваме обект Content, който приема параметри като markdown, view и with.

Важно: Въпреки че може да изглежда логично да използваме view и вътре в него да наследим Laravel темплейт с <x-mail::layout>, това няма да проработи правилно. За да се възползваме от всички вградени компоненти на Laravel, трябва да използваме markdown, а не view.

Стъпка по стъпка: Как да го направим правилно

1. Публикуване на шаблоните на Laravel

Laravel идва с готови Markdown шаблони, които можем да променяме. За да ги направим достъпни в проекта ни:

php artisan vendor:publish --tag=laravel-mail

След това ще се създадат файлове в resources/views/vendor/mail/, които можем да редактираме.

2. Използване на markdown в Mailable

Когато дефинираме съдържанието на имейла, трябва да използваме markdown: вместо view:.

Пример:

public function content(): Content
{
    return new Content(
        markdown: 'mail.orders.shipped', // "markdown:" instad of "view:"
        with: [
            'url' => $this->orderUrl,
        ],
    );
}

Този подход позволява да използваме готови компоненти като @component('mail::button'), @slot и @markdown, както и вграденото оформление на Laravel имейли.

3. Персонализиране на дизайна

  • 3.1 Промяна на CSS дизайна:
    resources/views/vendor/mail/html/themes/default.css

  • 3.2 Промяна на HTML шаблоните:
    resources/views/vendor/mail/html/

4. Създаване на нови имейли с markdown

Laravel ни позволява да създадем нов имейл с markdown оформление направо от конзолата. Това ще създаде както класа, така и Blade файла автоматично:

php artisan make:mail OrderShipped --markdown=mail.orders.shipped

⚠️ ВАЖНО: Без табулации!

Когато ползвате markdown за Blade файловете, избягвайте използването на табулация (indentation с таб клавиш), защото това ще развали форматирането на имейла, грозно, но работи.

Ако следвате тези стъпки, ще можете да създавате красиви, структурирани и лесни за поддръжка имейли в Laravel, които работят добре на всички пощи и устройства.

Референции и линк към документацията: https://laravel.com/docs/12.x/mail#markdown-mailables


Кои сме ние и защо да изберете нас?

Ние сме Webgods.bg, базирани сме в гр. Стара Загора и създаваме персонализирани проекти, създадени единствено и специално за вас и вашите нужди. Проекти, които да ви представляват пред вашите доверени партньори и да смажат конкуренцията. Ние сме надежден партньор, на който може да разчитате да бъде до вас в изработката на уеб сайт или изработката на онлайн магазин. Готови сме да изградим единствен по рода си уеб сайт или онлайн магазин за твоят бизнес, продукт или услуга. Заедно ще изградим едно дългосрочно партньорство и ще се погрижим за вашият дигитален успех!

Имаш ли нужда от уеб сайт или онлайн магазин?

Ние сме в готовност, а ти?

Изпрати запитване

Реализирани проекти от нас

Искам безплатна консултация

Попълнете заявката и ние ще ви се обадим за безплатна неангажираща 30 минутна консултация. Колкото по-детаийлно опишете вашите нужди, толкова по-конкретно ще можем да отговорим относно срокове, цени и дали ще можем да ви помогнем.
Отбележете сферите, в които имате нужда от консултация

Това ще ни помогне да бъдем подготвени и точно с кой от наишят екип да ви свъжем

Обикновенно отговаряме в рамките на 2 работни дни.