Как передать данные в просмотр почты, используя очередь? - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть класс работы ProductPublish метод handle() Я пытаюсь отправить электронное письмо.

public function handle()
{
   //
    Mail::to('i******o@gmail.com')->send(new SendEmail());
}

В контроллере ProductController я вызываю этот класс заданий, как показано ниже

ProductPublish::dispatch();

В классе SendEmail, который можно отправить по электронной почте, я пытаюсь передать данные для просмотра какниже

public $message;
public function __construct($message)
{
    $this->message = 'This is test message';
}
public function build()
{
    return $this->view('email.product.product-publish')->with('message' => $this->message); 
} 

Но это не работает.Я также пытался без присоединения with() метод, но все равно получаю результат.В представлении электронной почты я вызываю данные, как показано ниже

{{ $message }}

Может кто-нибудь любезно подсказать мне, в чем может быть проблема, что они не работают.Также я хочу передать данные из ProductController, но, поскольку мне не удалось передать из sendEmail, я еще не пробовал с контроллера.

Пожалуйста, сообщите мне, как я могу это исправить.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Попробуйте:

public $message;

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

public function build()
{
    // Array for passing template
    $input = array(
                      'message'     => $this->message
                  );

    return $this->view('email.product.product-publish')
                ->with([
                    'inputs' => $input,
                  ]);
}

Проверьте Документы

0 голосов
/ 18 февраля 2019

В laravel,

The arguments passed to the dispatch method will be given to the job's constructor

Поэтому, когда вы звоните диспетчеру, вы можете передать сообщение:

ProductPublish::dispatch($message);

Затем внутри вашей работы вы можете добавитьсвойство message и конструктор, чтобы получить его от отправки и назначить его:

private $message;

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

public function handle()
{
   // Use the message using $this->messge
    Mail::to('i******o@gmail.com')->send(new SendEmail($this->message));
}

Также вы можете напрямую ставить электронные письма в очередь.Проверьте документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...