Laravel Mail не передает общедоступную переменную для просмотра

Я хочу передать строку в электронное письмо в Laravel, но строка не отображается при просмотре электронной почты.

$recoveryString передается на почту:

$recoveryString = str_random(128);

$recoveryString = urlencode($recoveryString);   

RecoveryToken::where('user_id', $user->id)->delete();

$recoveryToken = RecoveryToken::create([
    'user_id' => $user->id,
    'recovery_token' => bcrypt($recoveryString),
]);         


Mail::to($user)->send(new ForgotEmail($user, $recoveryString));

ForgotEmail.php:

<?php

namespace App\Mail;

use App\User;
use App\RecoveryToken;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class ForgotEmail extends Mailable
{
    use Queueable, SerializesModels;


    public $user;
    public $recoveryString;



    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct(User $user, $recoveryString)
    {
        $this->user = $user;
        $recoveryString = $recoveryString;
    }



    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->from('[email protected]')
                ->view('emails.forgot');
    }
}

В моем шаблоне блейда для электронной почты {{ $user->username }} получит правильные данные, но {{ $recoveryString }} будет просто пустым. Почему это происходит? У меня сложилось впечатление, что любое общедоступное свойство, определенное в вашем почтовом классе, автоматически становится доступным для представления.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
395
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Опечатка - сам делал это сто раз:

В своем конструкторе не забудьте использовать $this:

$recoveryString = $recoveryString; становится $this->recoveryString = $recoveryString;

ХТН

Ваш конструктор должен иметь $this->recoveryString, а не $recoveryString:

Так должно быть:

     /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct(User $user, $recoveryString)
    {
        $this->user = $user;
        $this->recoveryString = $recoveryString;
    }

Другие вопросы по теме