首页 文章

将数据传递到电子邮件视图Laravel 5.3

提问于
浏览
1

我在我的应用程序中有这个场景,我必须在管理员创建帐户后立即将用户的密码和用户名发送到他们的电子邮件 . 这是我到目前为止所做的:控制器:

public function store(Request $request) {
        $data = $request->all();

        $validasi = Validator::make($data, [
                    'name' => 'required|max:255',
                    'username' => 'required|max:255|unique:users',
                    'email' => 'required|email|max:150|unique:users',
                    'password' => 'required|confirmed|min:6',
                    'level' => 'required|in:admin,author',
        ]);
        if ($validasi->fails()) {
            return redirect('user/create')->withInput()->withErrors($validasi);
        }
        $data['password'] = bcrypt($data['password']);
        $email = $data['email'];
        Mail::to($email)->send(new UserAdded());
        User::create($data);
        return redirect('user');
    }

电子邮件将成功发送,但我想将$ data ['username']和$ data ['password']传递给电子邮件视图 .

邮件视图:

<div class="row">
    <div class="col-sm-12 col-xs-12">
         <h2><span>Welcome new User!</span></h2>
         <p>Your username </p>
         <p>Your password</p>
    </div>

可用功能:

class UserAdded extends Mailable
{
    use Queueable, SerializesModels;
    public function __construct()
    {

    }
    public function build()
    {
        return $this->view('email/newuser');
    }
}

怎么做 ?我在哪里定义$ user数据?谢谢您的帮助!

1 回答

  • 4

    首先,您需要一个构建视图的类 . 在那里,您可以定义要传递给类的属性 . 它们将在视图中可访问 .

    <?php
    
    namespace App\Mail;
    
    use App\Order;
    use Illuminate\Bus\Queueable;
    use Illuminate\Mail\Mailable;
    use Illuminate\Queue\SerializesModels;
    
    class UserAdded extends Mailable
    {
        use Queueable, SerializesModels;
    
        public $username;
        public $password;
        /**
         * Create a new message instance.
         *
         * @return void
         */
        public function __construct($username, $password)
        {
            $this->username = $username;            
            $this->password = $password;
        }
    
    
        public function build()
        {
            return $this->view('reference.your.view.path.here'); //CHANGE
        }
    }
    

    您现在可以访问视图中的变量 .

    <div class="row">
        <div class="col-sm-12 col-xs-12">
             <h2><span>Welcome new User!</span></h2>
             <p>Your username: {{$username}} </p>
             <p>Your password: {{$password}} </p>
        </div>
    

    调用您的视图可以像这样实现:

    Mail::to($email)->send(new UserAdded($data['username'],$password));
    

相关问题