变量未在电子邮件模板中传递

时间:2019-03-03 16:17:15

标签: laravel email laravel-5 markdown

我的控制器中有此方法

public function update(UserUpdateRequest $request)
{
        $request->user()->update([
            'name' => $request->username,
        ]);

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

        return redirect()->route('account.index');
}

因此,当用户更新用户名时,将发送一封电子邮件

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->markdown('emails.user.updated');
}

这是电子邮件模板

Hi {{ $user->username }},

We would like to inform you that your username has been updated successfully. 

If this action wasn't done by you, you need to contact with our support.

但这在队列中引发了异常

  

ErrorException:未定义的变量:/ storage / framework / views /

中的用户

有什么想法我在做什么错吗?

2 个答案:

答案 0 :(得分:0)

尝试通过view方法将其传递到with并保护user变量:

protected $user;

public function build()
{
    return $this->view('emails.user.updated')->with(['username' => $this->user->username]);
}

然后您可以在视图中像{{ $username }}一样访问它。

答案 1 :(得分:0)

尝试此操作,然后访问您所认为的$ user

public function update(UserUpdateRequest $request)
{
    $request->user()->update([
        'name' => $request->username,
    ]);

    $user = $request->user();

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

    return redirect()->route('account.index');
}

您不能直接向您的电子邮件模板发送$ request,这可能是您无法访问$ user的原因

相关问题