محمد
4 سال پیش توسط محمد مطرح شد
2 پاسخ

ارسال دو پارامتر به ایمیل در لاراول

سلام
من یک فرم دارم در یک صفحه که طرف ایمیل و نظر و اسمشو میزنه
و در پنل هم اون هارو نشون دادم
حالا می خوام وقتی پاسخ دادم به هر نظر به ایمیلی که کاربر در فرم گذاشته بود یه ایمیل ارسال بشه
کد روت 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: []
}

ثبت پرسش جدید
moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش آپدیت شد
0

سلام
در قسمت form action کد ویو ارسال پاسخ باید مقدار binding Route به صورت array باشد.

{{ route('contact.response.post' , ['contact' => $contact->id]) }}

@mrn


محمد
تخصص : Laravel
@mprogrammer7 4 سال پیش مطرح شد
3

مشکل از این قسمت نیست اسم رو نشون میده , در action وقتی یه پارامتر میفرستیم میشه به همین صورت نوشت

    <form action="{{ route('contact.response.post' , $contact->id) }}" method="post" class="form-group">

@mohaligateway


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام