#php #laravel #email
Вопрос:
При попытке отправить сообщение, на мой взгляд verifyEmail.blade.php $агент равен нулю, а $агент->имя говорит о попытке получить свойство не объекта.
verifyEmail.blade.php
<body>
<h2> Welcome to our website{{ $agent->name }} </h2>
click <a href= "/user/verify/{{ $agent->verifyUser->token }}"> here </a> to verify your email
</body>
Вот как я использую класс Mail. В моей почтовой папке в файле verifyEmail у меня есть функция построения, которая собирает модель $agent.
verifyEmail.php
class verifyEmail extends Mailable
{
public $agent;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($agent)
{
$this->$agent = $agent;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('emails.verifyEmail');
}
}
И в моем контроллере администратора, который выполняет регистрацию для пользователя, выглядит так. Метод отправки передает модель агента в verifyEmail.php что работало в учебнике, который я смотрел. Как я могу сделать модель агента доступной в verifyEmail.blade.php
Административный контроллер
$agent = new agent($data);
$agent->name = $data["name"];
$agent->email = $data["email"];
$agent->nrc = $data["nrc"];
$agent->resident = $data["residents"];
$agent->password = Hash::make($data["password"]);
$agent->save();
verifyUser::create(
[
'token' => Str::random(60),
'agent_id' => $agent->id,
]
);
Mail::to($agent->email)->send(new verifyEmail($agent));
Ответ №1:
Я думаю, что для решения этой проблемы в коде могут быть внесены небольшие изменения.
Внутри файла verifyEmail.php, линия
$this->$agent = $agent;
должно быть
$this->agent = $agent;
Потому что $this->$агент может быть не в состоянии найти переменную уровня класса «агент» и обновить ее значение, указанное в конструкторе, чтобы оно имело значение по умолчанию null, которое отображается впоследствии.
Комментарии:
1. О боже, я не верю, что в этом была проблема. Я продолжал проверять файлы поставщиков, чтобы узнать, как идут дела под капотом.
Ответ №2:
Настройка Отправителя
Используя этот from
метод, сначала давайте рассмотрим настройку отправителя электронного письма. Или, другими словами, от кого будет отправлено электронное письмо «от». Существует два способа настройки отправителя. Во-первых, вы можете использовать from
метод в рамках метода вашего почтового класса build
:
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->from('example@example.com')
->view('emails.orders.shipped');
}
Использование Глобального from
Адреса
Однако, если ваше приложение использует один и тот же адрес «от» для всех своих электронных писем, вызов метода » от » в каждом создаваемом вами почтовом классе может стать затруднительным. Вместо этого вы можете указать глобальный адрес «от» в своем configuration file. This address will be used if no other
config/mail.php адрес»от» указан в классе, отправляемом по почте:
'from' => ['address' => 'example@example.com', 'name' => 'App Name'],
Кроме того, вы можете определить глобальный адрес «reply_to» в своем config/mail.php файл конфигурации:
'reply_to' => ['address' => 'example@example.com', 'name' => 'App Name'],
Так что вы можете попробовать это В verifyEmail.php
Изменить это
public function build()
{
return $this->view('emails.verifyEmail');
}
К этому
public function build()
{
return $this->from('info@domain.com')->view('emails.verifyEmail');
}
Комментарии:
1. Это все еще приводит к той же ошибке. Я думаю, что проблема в том, что сборка не выбирает функцию построения агента, или администратор отправки почты в AdminController не предоставляет конструкцию с моделью агента