سلام و عرض خسته نباشید
استاد در جلسات گفته اید که برای پاس دادن یک متغیر مثلا اسم یوزر درون خود کلاس ایمیل به شکل private یا public بفرستید و جلوی ان استرینگ مهرداد را قرار دادید
خب الان فرض میکنیم که بنده از طریق پنل میخوام به اقای x ایمیل بزنم و نامش رو بدم اصلا هر فیلدی که دلم خواست رو از تیبل بهش بدم برای اینکار این سیستم پاسخگو نیست چرا که نمیتونم ای دی کاربر رو پاس بدم به کلاس ایمیلم مسلما ناقص است ...
کجا باید این ریکوست رو بگیرم توی سرویس compact یوزر catch میشه ...توی خود Mail نیز همینطور و توی قسمت emailProvider هم همینطور
گیج شدم .. نمیدونم شایدم من دارم اشتباه میکنم
لطفا راهنمایی و یا بازنگری فرمایید
<?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'));
}
}
استاد در واقع تا اینجا اومدم ازینجا به بعد رو نمیدونم باید به کیو کجا پاس بدم ک تو ایمیل دریافتش کنم ... واقعا گیج شدم
سلام ...
اون قسمتی که بنده داخل سازنده کلاس، مهرداد رو نوشتم فقط به عنوان تست بود که متوجه بشید به چه صورت ایمیل کار میکنه و شما برای اینکه اون فیلدی که میخواید رو پاس بدید به ایمیل میتونید زمانی که دارید از اون کلاس 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));
مرسی استاد از پاسختون هی میرفتم میزاشتمش همینجا ولی چون یوزر رو به new $mailable پاس نمیدادم همش به مشکل میخورد و exception تولید میکرد ...
new $mailable($user)
1- به این شکل نمیشناستش بلکه باید به صورت زیر پاس داد
2- استاد تغییرات را دادم توی کلاس رجیستر ایمیل به طور مثال اما انگار داره از یه جا catch میکنه و مقدار قبلی رو باز برام ایمیل میکنه مثله همون حالت استرینگ مهرداد که گذاشته بودید .من job ها رو تعریف کردم ممکنه به خاط dispatch باشه ؟
new $mailable(User::find($request->user_id))