سلام
من یک فرم دارم در یک صفحه که طرف ایمیل و نظر و اسمشو میزنه
و در پنل هم اون هارو نشون دادم
حالا می خوام وقتی پاسخ دادم به هر نظر به ایمیلی که کاربر در فرم گذاشته بود یه ایمیل ارسال بشه
کد روت post و get ارسال پاسخ
Route::get('contactus/{contact}/response' , 'ContactController@response')->name('contact.response');
Route::post('contactus/{contact}/response' , 'ContactController@sendmail')->name('contact.response.post');
کد ویو ارسال پاسخ
<form action="{{ route('contact.response.post' , $contact->id) }}" method="post" class="form-group">
@csrf
<label for="">پاسخ</label>
<input type="text" name="response" class="form-control">
<button class="btn btn-primary">ارسال</button>
</form>
<a class="btn btn-success" href="{{ route('create.contact.all') }}">بازگشت</a>
کد کنتلر متد ارسال ایمیل
public function sendmail(Request $request ,Contact $contact){
$message=$request->response;
Mail::to($contact->email)->send(new contactmail($contact , $message)) ;
alert()->error('پاسخ شما با موفقیت ارسال شد');
return redirect()->route('create.contact.all');
}
کد کلاس mail
class contactmail extends Mailable
{
use Queueable, SerializesModels;
public $name;
public $message;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($name , $message)
{
$this->name= $name;
$this->message= $message;
}
/**
* Build the message.
*['name'=> $this->name , 'message' => $this->message]
* @return $this
*/
public function build()
{
return $this->subject('پاسخ به نظر')
->view('emails.contactNotification' )
->with([
'name' => $this->name,
'message' =>$this->message,
]);
}
}
کد ویو ایمیل
<body>
<h2>مدیر به سوال شما پایخ داد</h2>
<h1>{{ $name->name }} سلام</h1>
<p>{{ $message }}</p>
</body>
کانفیگ ایمیل هم انجام دادم درسته
حالا وقتی روی ارسال پاسخ میزنم این ارور میده
htmlspecialchars() expects parameter 1 to be string, object given (View: C:\Users\Ofoghwe\Desktop\newknight\resources\views\emails\contactNotification.blade.php)
حالا پارامتر دوم یعنی $message که از $request گرفتم رو از ویو ایمیل حذف می کنم ایمیل ارسال میشه و نام هم که پارامتر اول بود نشون میده
<body>
<h2>مدیر به سوال شما پایخ داد</h2>
<h1>{{ $name->name }} سلام</h1>
</body>
از $name اومدم dd گرفتم نام رو نشون میده اما وقتی از $message اومدم dd گرفتم اینو نشون داد
Illuminate\Mail\Message {#1407 ▼
#swift: Swift_Message {#1405 ▼
-headerSigners: []
-bodySigners: []
-savedMessage: []
#userFormat: null
#userCharset: "utf-8"
#userDelSp: null
-nestingLevel: 4096
-headers: Swift_Mime_SimpleHeaderSet {#1403 ▶}
-body: null
-encoder: Swift_Mime_ContentEncoder_QpContentEncoderProxy {#1393 ▶}
-idGenerator: Swift_Mime_IdGenerator {#1386 ▶}
-boundary: null
-compositeRanges: array:3 [▶]
-compoundLevelFilters: array:1 [▶]
-cache: Swift_KeyCache_DiskKeyCache {#1388 ▶}
-immediateChildren: []
-children: []
-maxLineLength: 78
-alternativePartOrder: array:3 [▶]
-id: "660dc5829b901da2ff542ffa9234c2fd@127.0.0.1"
-cacheKey: "b137de5d28ee5f5e3b37b922ba4c7314"
#userContentType: "text/plain"
-nestingLevel: 4096
}
#embeddedFiles: []
}
سلام
در قسمت form action کد ویو ارسال پاسخ باید مقدار binding Route به صورت array باشد.
{{ route('contact.response.post' , ['contact' => $contact->id]) }}
مشکل از این قسمت نیست اسم رو نشون میده , در action وقتی یه پارامتر میفرستیم میشه به همین صورت نوشت
<form action="{{ route('contact.response.post' , $contact->id) }}" method="post" class="form-group">
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟