Laravel:从控制器传递数组到mail :: to

时间:2017-08-14 12:47:18

标签: php email laravel-5 laravel-5.4

在我的项目中,在有人填写价格表后,我想给他/她发送一封电子邮件。在控制器中,我创建了一个数组,我想传递给mailable,以便在电子邮件中显示。

我现在的位置:

$params = array(
        'name' => $name, //user's data
        'email' => $email,
        'phone' => $phone,
        'data' => $data, //other stuffs in the form 
);

Mail::to($email)
    ->send(new pricequote($params));

之后如何从mailable类传递到模板?

2 个答案:

答案 0 :(得分:1)

我认为pricequote是可邮寄的类,那么你的pricequote mailable类应该是这样的:

<?php

namespace App\Mail;

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

class pricequote extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * The data for the email instance.
     *
     * @var data
     */
    protected $data;

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

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

然后在您的控制器中,您可以发送如下电子邮件:

Mail::to("mail@email.com")->send(new pricequote($data));

Laravel 5.1

您可以选择要发送的视图,如下所示:

$params = array(
    'name' => $name, //user's data
    'email' => $email,
    'phone' => $phone,
    'data' => $data, //other stuffs in the form 
); 

Mail::send('view', $params, function($m){

    $m->to($this->argument('to_email'));

});

第一个参数是视图,第二个参数是您希望在视图上访问的数据。

答案 1 :(得分:1)

你可以使用;

命名空间App \ Mail;

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

public function build()
{
    return $this->view('emails.contacts')
        ->with(['data' => $this->data]);
}