传递给App \ Mail \ SurveyMail :: __ construct()的参数1必须是App \ Mail \ User的实例,数组给出

时间:2017-08-02 10:40:46

标签: laravel laravel-5.3

我正在尝试使用Laravel 5.3中的mailable api向管理员接受的用户发送电子邮件。

class SurveyMail extends Mailable
{
    use Queueable, SerializesModels;

    public $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('mail.send')
        ->from('monsite@chezmoi.com');
    }

这是我的控制器

 class EmailController extends Controller
{
    public function send(Request $request,User $user)
    {    
         Mail::to($user)
         ->send(new SurveyMail ($request->except('_token')));
    }
}

观点:

<body style="background: black; color: white">
 <h2>Prise de contact sur mon beau site</h2>
    <p>Réception d'une prise de contact avec les éléments suivants :</p>
    <ul>

      <li><strong>Nom</strong> : {{ $user->name }}</li>
      <li><strong>Email</strong> : {{ $user->email }}</li>


</body>

似乎不接受传递给构造函数的参数User。请问,我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

SurveyMail构建中添加App\或在其顶部添加use App\User

public function __construct(App\User $user)
{
    $this->user=$user;
}

然后调用应该是这样的:

Mail::to($user)
      ->send(new SurveyMail ($user));

答案 1 :(得分:1)

在您的SurveyMail构造函数中,您已将提示$user键入User个对象,但在实例化该类时,您已传递了请求数据,这是一个数组。试试这个

Mail::to($user)->send(new SurveyMail($user));

此外,User对象没有导入,因此假设您的User类位于App\Mail内。它不是。因此,请在您的班级上导入App\User模型。

use App\User; // <- Add this here

class SurveyMail extends Mailable

此外,在您看来。您忘了关闭ul代码。

<body style="background: black; color: white">
 <h2>Prise de contact sur mon beau site</h2>
    <p>Réception d'une prise de contact avec les éléments suivants :</p>
    <ul>
      <li><strong>Nom</strong> : {{ $user->name }}</li>
      <li><strong>Email</strong> : {{ $user->email }}</li>
    </ul>
</body>

答案 2 :(得分:0)

你可以做以下哪些对我有用。

SurveyMail构造函数中,删除'User'之前的$user并使构造函数看起来如下

public function __construct($user)
{
    $this->user = $user;
}

这应该可以解决错误。