داینامیک نبودن سیستم ایمیل

پرسیده شده
فعالیت 1757 روز پیش
دیده شده 1208 بار
0

سلام و عرض خسته نباشید 

استاد در جلسات گفته اید که برای پاس دادن یک متغیر مثلا اسم یوزر  درون خود کلاس ایمیل به شکل private یا public  بفرستید و جلوی ان استرینگ مهرداد را قرار دادید 

خب الان فرض میکنیم که بنده از طریق پنل میخوام به اقای x ایمیل بزنم و نامش رو بدم اصلا هر فیلدی که دلم  خواست رو از تیبل بهش بدم برای اینکار این سیستم پاسخگو نیست چرا که نمیتونم ای  دی کاربر رو پاس بدم به کلاس ایمیلم مسلما ناقص است ...

کجا باید این ریکوست رو بگیرم توی سرویس compact یوزر  catch میشه ...توی خود Mail نیز همینطور و توی قسمت emailProvider هم همینطور 

گیج شدم .. نمیدونم شایدم من دارم اشتباه میکنم 

لطفا راهنمایی و یا بازنگری فرمایید 

فایل پیوست

مرتضی حرمتی
مرتضی حرمتی

18 تیر 98

0
حذف شده
<?php
namespace App\Services\Notification\Providers;


use App\Services\Notification\Providers\Contract\Provider;
use App\User;
use Illuminate\Mail\Mailable;
use Illuminate\Support\Facades\Mail;


class EmailProvider implements Provider {

    private $user;
    private $mailable;
    public function __construct(User $user,Mailable $mailable)
    {
        $this->user =$user;
        $this->mailable =$mailable;
    }
    public function send()
    {

        $user_name = $this->user->name;
        return Mail::to($this->user)->send($this->mailable,compact('user_name'));
    }
}



استاد در واقع تا اینجا اومدم ازینجا به بعد رو نمیدونم باید به کیو کجا پاس بدم ک تو ایمیل دریافتش کنم ... واقعا گیج شدم 

فایل پیوست

مرتضی حرمتی

توسط

مرتضی حرمتی

18 تیر 98

0
حذف شده

سلام ... 

اون قسمتی که بنده داخل سازنده کلاس، مهرداد رو نوشتم فقط به عنوان تست بود که متوجه بشید به چه صورت ایمیل کار میکنه و شما برای اینکه اون فیلدی که میخواید رو پاس بدید به ایمیل میتونید زمانی که دارید از اون کلاس Mailable یک آبجکت جدید میسازید اون موردی که میخواید رو به صورت پارامتر پاس بدید به داخل کلاستون ... (داخل پروژه دوم قسمت تایید ایمیل این مورد کاملتر توضیح داده شده ) 

در اصل شما کلاستون به شکل های زیر میشه : 

class TopicCreated extends Mailable
{
    use Queueable, SerializesModels;
    private $user;
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct(User $user)
    {
        $this->user = $user;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('emails.topic-created')->with([
            'full_name' => $this->user->first_name . $this->user->last_name
        ]);
    }
}





و زمانی هم که بخواید ازش استفاده کنید و به عنوان مثال یوزر رو بهش پاس بدید زمانی که دارید از کلاس Mailable خودتون یک آبجکت میسازید یوزر رو بهش پاس میدید : 

SendEmail::dispatch(User::find($request->user), new $mailable($user));

 

فایل پیوست

مهرداد سامی

توسط

مهرداد سامی

18 تیر 98

0
حذف شده

مرسی استاد از پاسختون هی میرفتم میزاشتمش همینجا ولی چون یوزر رو به new $mailable پاس نمیدادم همش به مشکل میخورد و exception  تولید میکرد ...

فایل پیوست

مرتضی حرمتی

توسط

مرتضی حرمتی

19 تیر 98

0
حذف شده

 

new $mailable($user)

1- به این شکل نمیشناستش بلکه باید به صورت زیر پاس داد 

2- استاد تغییرات را دادم توی کلاس رجیستر ایمیل به طور مثال اما انگار داره از یه جا catch  میکنه و مقدار قبلی رو باز برام ایمیل میکنه مثله همون حالت استرینگ مهرداد که گذاشته بودید .من job ها رو تعریف کردم ممکنه به خاط dispatch  باشه ؟

 

new $mailable(User::find($request->user_id))

 

فایل پیوست

مرتضی حرمتی

توسط

مرتضی حرمتی

19 تیر 98

حذف شده
3- استاد به صورت ابجکتی هم بهش پاس دادم یعنی یه آبجکت ساختم به صورت بالا که گفتید از یوزر و همون مقدار رو قرار دادم بازم همون حالت قبلیه $user = User::find($request->user_id); SendEmail::dispatch(User::find($request->user_id), new $mailable($user));
مرتضی حرمتی

19 تیر 98

0
حذف شده

کدتون رو داخل تلگرام برام ارسال کنید .

فایل پیوست

مهرداد سامی

توسط

مهرداد سامی

19 تیر 98