0

I don’t understand why it throws such an error. I call the variables from the controller and not the object.

Error:

Facade\Ignition\Exceptions\ViewException htmlspecialchars() expects parameter 1 to be string, object given (View: C:\OSPanel\domains\best.salon\resources\views\landing\mails-temlate.blade.php)

MAILcontroller:

    <?php

namespace App\Http\Controllers;
use Mail;
use Illuminate\Http\Request;

class MailController extends Controller
{

    public function store(Request $request){
        $client_name = $request->get('name');
        $email = $request->get('email');
        $message = $request->get('text');

        \Mail::send(['text' => 'landing.mails-temlate'], compact('client_name','email','message'),
            function ($message) use ($request){
                $message->to('estikinfo@gmail.com', 'Nuo Estik Puslapi Zinute')->subject('Nuo Estik Puslapi Zinute');
                $message->from('estikinfo@gmail.com', 'Nuo Estik Puslapi Zinute');
            });

        return view('landing.index', compact('client_name','email','message'));

    }
}

Mail template

CLIENT INFO:

Name: {{ $client_name }}
Email: {{ $email }}
-----------------------------------------
Message: {{ $message }}
theduck
  • 2,589
  • 13
  • 17
  • 23
Arthur
  • 385
  • 3
  • 13
  • `htmlspecialchars()` is empty in C:\OSPanel\domains\best.salon\resources\views\landing\mails-temlate.blade.php) you need to use if statement to see which value is empty –  Jan 04 '20 at 12:05

1 Answers1

0

Probably you should rename name of $message variable you use like so:

public function store(Request $request){
    $client_name = $request->get('name');
    $email = $request->get('email');
    $text = $request->get('text');

    \Mail::send(['text' => 'landing.mails-temlate'], compact('client_name','email','text'),
        function ($message) use ($request){
            $message->to('estikinfo@gmail.com', 'Nuo Estik Puslapi Zinute')->subject('Nuo Estik Puslapi Zinute');
            $message->from('estikinfo@gmail.com', 'Nuo Estik Puslapi Zinute');
        });

    return view('landing.index', compact('client_name','email','text'));

}

And in your view use $text variable instead of $message. I believe there is conflict here because you use $message as text you want to display but $message variable is also used inside closure and then it's object and not string.

Marcin Nabiałek
  • 109,655
  • 42
  • 258
  • 291
  • Thank, now everything works. Change $message variable to $text, but im ask you for what $message variable not working ??? Maybe $message variable consider keyword? I will listen to you carefully – Arthur Jan 04 '20 at 12:19
  • @ArturKhachatryan passing wrong value to `htmlspecialchars()` that is why getting that error `htmlspecialchars() expects parameter 1 to be string, object given`, because its blocking your value and returning an empty object `htmlspecialchars()` can use string == text. look into https://www.php.net/manual/en/function.htmlspecialchars.php –  Jan 04 '20 at 12:30