Отображение данных в файлах просмотра при отправке почты - PullRequest
1 голос
/ 10 февраля 2020

Пытаюсь отправить почту пользователям при регистрации, В файле просмотра мне нужно отправить данные, отправленные пользователями в форме. Когда я пытался отправить почту, данные не передаются. Пожалуйста, помогите мне решить проблему

Сначала я запускаю следующую команду

php artisan make:mail WelcomeMail

После этого под Mails/WelcomeMail.php я написал следующий код

<?php

namespace App\Mail;

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


class WelcomeMail extends Mailable
{
    use Queueable, SerializesModels;

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

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        //return $this->from('xavierissac94@gmail.com')->subject('new customer registration')->view('emails.welcome');
       return $this->view('emails.welcome');
    }
}

код в моем контроллере регистрации

public function storeUsers(Request $request)
{
    $this->validate($request, [
        'email' => 'required|email'
    ]);

    $postdata = $request->all();
    $user = new User;
    $hashedRandomPassword = Hash::make('password', [
        'rounds' => 12
    ]);
   $user = new User;
   $user->name=$postdata['user_name'];
   $user->email=$postdata['email'];
   $user->password= $hashedRandomPassword;
   $user->save();
    $data = array( 'email' => $postdata['email'], 'name' => $postdata['user_name'] );

    Mail::to($user->email)->send(new WelcomeMail($user));
   return back()->with('success','thanks for contacting us');
   exit(ok);
    //Mail::to($postdata['email'])->send(new WelcomeMail($user));
    return $user;
   //return redirect('users');
}

Ниже приведен мой код в файле представления, здесь я пытаюсь получить данные, используя {{$user['name']}}

<!DOCTYPE html>
<html>
<head>
    <title>Welcome Email</title>
</head>

<body>
<h2>Dear {{$user['name']}}  </h2>

<p>You have succesfully registerd as a valuable client of LifeLove and Other things. We are sending you a password to login.Please remeber to change your password after login.</p>
<p>Your Password for login is {{$user['password']}} </p>
<p><h2>Kind Regards,</h2></p>
<h2>Team Life Love</h2>
</body>

</html>

Но я получаю неопределенную переменную $user ошибка. Мне нужно отправить пароль и имена пользователей пользователю при регистрации. Письма отправляются успешно, но данные не передаются.

Пожалуйста, помогите мне

1 Ответ

0 голосов
/ 10 февраля 2020

В вашем почтовом классе отсутствует свойство publi c $user:

class WelcomeMail extends Mailable
{
    use Queueable, SerializesModels;

    // ADD ME!!!!
    public $user;

    // ADD ME TOO!!!!
    public $password;

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

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
       return $this->view('emails.welcome')->with(['password' => $this->password]);
    }
}

Как правило, вы захотите передать некоторые данные в ваше представление, которые вы можете использовать при рендеринг письма HTML. Есть два способа сделать данные доступными для просмотра. Во-первых, любое свойство publi c, определенное в вашем почтовом классе, будет автоматически доступно для просмотра. Так, например, вы можете передать данные в конструктор вашего почтового класса и установить для этих данных общедоступные c свойства, определенные в классе

Почтовые документы

Вам также необходимо обновить почтовый файл представления, чтобы использовать нотацию доступа к объектам, а не индексы массива. Например:

// BAD
<h2>Dear {{$user['name']}}  </h2>

// GOOD
<h2>Dear {{ $user->name }}  </h2>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...