Hi, I have this Mailable class,
<?php
namespace MyCompany\Common\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use MyCompany\Common\Models\Player;
use MyCompany\Common\Models\EmailValidationToken;
class ValidateEmail extends Mailable
{
use Queueable, SerializesModels;
public $player;
public $email_validation_token;
public $subject = 'Email validation request';
/**
* Create a new message instance.
*
* @return void
*/
public function __construct(Player $player)
{
$this->player = $player;
$player->is_email_verified = false;
$player->save();
$this->email_validation_token = EmailValidationToken::create(['email' => $player->mail, 'player_id' => $player->id]);
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->subject($this->subject)
->view('mail.validate-email');
}
}
When I try to use it I always get this error message:
local.ERROR: ErrorException: Undefined variable: email_validation_token in /var/www/html/storage/framework/views/cb5b68b17c989fffdb669af6e4fbfbec9344748d.php:12
The view is very simple:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Validate your email address please</title>
</head>
<body>
<h1>Validate your email address please</h1>
<p>Dear {{ $player->name }},
<br>
Validate your email address please.<br/>
Your token is: <b>{{ $email_validation_token->token }}</b>.
<br/><br/>
MyCompany Support
</p>
</body>
</html>
This is how I call it:
public function sendEmailVerification(Request $request, Player $player)
{
Mail::to($player->mail)
->send(new ValidateEmail($player));
return response()->json(['success' => true]);
}