【问题标题】:Passing data to email view Laravel 5.3将数据传递到电子邮件视图 Laravel 5.3
【发布时间】:2017-04-09 14:30:12
【问题描述】:

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

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 数据?感谢您的帮助!

【问题讨论】:

  • 你UserAdded()函数的代码是什么?
  • 我认为@manniL 的回答更有用。我的回答不是细节。无论如何,你可以参考它:)
  • @manniL 的回答是正确的
  • @KelvinKyaw 好的 :)
  • @PhillisPeters 是的,完成了

标签: laravel laravel-5


【解决方案1】:

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

<?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));

【讨论】:

  • 没问题!很高兴我能够帮助@PrestonGarvey22
猜你喜欢
  • 1970-01-01
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多