كيفية تخصيص قوالب البريد الإلكتروني إعلام Laravel 5.4 (رأس وتذييل الصفحة)

حسنًا ، لذلك واجهت مشكلة إعداد نموذج بريد إلكتروني لتطبيقي Laravel 5.4. كان بريدًا إلكترونيًا "مرحبًا" ، باستخدام قالب Laravel الافتراضي. كان التحدي هو تغيير رأس وتذييل القالب.

نحاول جميعًا قراءة الوثائق بأسرع ما يمكن ، وإذا لم ينجح ذلك ، فبعد 3 دقائق كاملة من قراءة الوثائق ، سننتقل إلى تدفق stackoverflow ، أو laracasts أو أي منتدى آخر ، ونتوقع ظهور رمز جاهز "للنسخ واللصق" .

الأمور سهلة إذا كنت تريد فقط تغيير الرسالة النصية ، ولديك العديد من الأمثلة حول كيفية القيام بذلك ، باستخدام مكونات البريد. ومع ذلك ، لم أجد أي إجابات حول كيفية تغيير الرأس والتذييل الافتراضي.

المكونات

Laravel 5.4 قدم مكونات Mailable. يمكنك القراءة عنه هنا.



    {{$ slot}}

سيكون هذا أحد مكونات التنبيه ، والذي يعد في الأساس قالب نصل. بعد ذلك سيكون {{$ slot}} متغير / مكان لإسقاط المحتوى الخاص بك من قالب / مكون آخر.

component ( 'تنبيه')
     عفوًا!  حدث خطأ ما!
endcomponent

مثل هذا. هذا من شأنه أن يجعل

     عفوًا! حدث خطأ ما!

نشر البائع نشر

في البداية ، ستستخدم Laravel مكوناتها المخفية في قلب الإطار ، والتي يمكنك تصديرها عن طريق العمل

بائع php الحرفي: نشر - علامة = laravel الإلكتروني

سيؤدي ذلك إلى إنشاء مجلدات البريد والتخفيض داخل مجلد الموارد / العرض / البائع. في الداخل ستجد مكونًا مثل التصميم أو الرأس وما إلى ذلك.

خلق الإخطار

ما تريد القيام به ، هو إما إنشاء إعلام أو حدث أو فئة بريد لإطلاق بريد إلكتروني عندما يحدث شيء ما.

قررت أن أذهب مع إشعار. عند إنشاء أي إشعار (يمكنك قراءة المزيد حول كيفية إنشاء إشعار عبر حرفي) ، ستحصل على فصل مثل هذا:

<؟ PHP
مساحة التطبيق App \ Notifications؛
استخدام Illuminate \ Bus \ Queueable؛
استخدام Illuminate \ Notifications \ Notification؛
استخدام Illuminate \ Contracts \ Queue \ ShouldQueue؛
استخدام Illuminate \ Notifications \ Messages \ MailMessage؛
فئة UserRegistered يمتد الإعلام
{
    استخدام قائمة الانتظار ؛
/ **
     * متغير فئة موثقة
     *
     * سلسلة فار
     ** /
    مستخدم عام $؛
/ **
     * إنشاء مثيل إعلام جديد.
     *
     @ عودة باطلة
     * /
    الوظيفة العامة __إنشاء (مستخدم $)
    {
        $ this-> user = $ user؛
    }
/ **
     * احصل على قنوات تسليم الإخطار.
     *
     *param مختلطة دولار للإبلاغ
     @ مجموعة العودة
     * /
    الوظيفة العامة عن طريق ($ الإخطار)
    {
        إرجاع ['البريد'] ؛
    }
/ **
     * الحصول على تمثيل البريد من الإخطار.
     *
     *param مختلطة دولار للإبلاغ
     *return \ Illuminate \ Notifications \ Messages \ MailMessage
     * /
    الوظيفة العامة toMail ($ notifiable)
    {
        إرجاع (MailMessage جديد)
            -> من ('info@sometimes-it-wont-work.com' ، 'المسؤول')
            -> الموضوع ("مرحبًا بك في البوابة")
            -> تخفيض السعر ('mail.welcome.index' ، ['user' => $ this-> user]) ؛
    }
/ **
     * الحصول على تمثيل مجموعة من الإخطار.
     *
     *param مختلطة دولار للإبلاغ
     @ مجموعة العودة
     * /
    الوظيفة العامة toArray ($ إعلام)
    {
        إرجاع [
            //
        ].
    }
}

هنا ، انتبه إلى طريقة toMail وكذلك مُنشئ الفصل لأننا سنمرر كائنًا إليها. لاحظ أيضًا أننا نستخدم

-> تخفيض السعر ( 'some.blade.php')؛

الخطوة التالية هي دفع هذا الإشعار إلى العمل. في مكان ما في RegisterController ، قد ترغب في الاتصال بهذا (عدم الخوض في كيفية تنفيذه ، إما المزامنة أو قائمة الانتظار ...). لا تنسَ تضمين مساحة اسم الإشعار في الأعلى.

مستخدم $ = مستخدم :: إنشاء ([
            'name' => بيانات $ ['name'] ،
            'email' => بيانات $ ['email'] ،
            'اسم العائلة' => بيانات $ ['اسم العائلة'] ،
            'password' => bcrypt ($ data ['password']) ،
        ])؛
$ user-> تخطر (UserRegistered (مستخدم $ جديد)) ؛

لماذا أنا ذاهب عميق جدا؟ حسنًا لأنني أريد أيضًا أن أوضح لك كيفية تمرير بياناتك إلى قالب البريد الإلكتروني.

بعد ذلك ، يمكنك الانتقال إلى الموارد / طرق العرض / البريد / الترحيب / index.blade.php (يمكن أن يكون أي مجلد واسم ملف تريده) ولصق هذا:

component ( "البريد :: تخطيط ')
    {{- Header -}}
    slot ( 'رأس')
        component ('mail :: header' ، ['url' => config ('app.url')])
            عنوان الرأس
        endcomponent
    endslot
{{-- الجسم --}}
    هذه هي رسالتنا الرئيسية {{$ user}}
{{- Subcopy -}}
    isset ($ subcopy)
        slot ( 'subcopy')
            component ( "البريد :: subcopy ')
                {{$ subcopy}}
            endcomponent
        endslot
    endisset
{{-- تذييل --}}
    slot ( 'تذييل')
        component ( "البريد :: تذييل ')
            © {{date ('Y')}} {{config ('app.name')}}. سوبر FOOTER!
        endcomponent
    endslot
endcomponent

يمكنك الآن إضافة أي صورة بسهولة إلى رأسك أو تغيير الرابط داخل التذييل وما إلى ذلك.

أتمنى أن يساعدك هذا.

تابعني على تويتر
أضفني على LinkedIn