Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel-将自定义数据传递到电子邮件视图_Laravel_Laravel 5 - Fatal编程技术网

Laravel-将自定义数据传递到电子邮件视图

Laravel-将自定义数据传递到电子邮件视图,laravel,laravel-5,Laravel,Laravel 5,继上一个问题之后,我设置了一个电子邮件控制器,以正确地将用户数据传递给视图。我现在正试图修改它,以便可以传递一些自定义数据。我的控制器看起来像这样 namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; use Illuminate\Contracts\Queue\ShouldQueue; class Welco

继上一个问题之后,我设置了一个电子邮件控制器,以正确地将用户数据传递给视图。我现在正试图修改它,以便可以传递一些自定义数据。我的控制器看起来像这样

namespace App\Mail;

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

class Welcome extends Mailable
{
    use Queueable, SerializesModels;

    public $email_data;

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

    public function build()
    {
        return $this->view('emails.welcome')->with(['email_data' => $this->email_data]);
    }
}
  /* Create Data Array For Email */
        $email_data = array(
            'first_name'=>'John', 
            'last_name'=>'Doe', 
            'email'=>'john@doe.com',
            'password'=>'temp',
        );

        /* Send Email */
        Mail::to($user->email)->send(new Welcome($email_data));
我正在发送这样的电子邮件

namespace App\Mail;

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

class Welcome extends Mailable
{
    use Queueable, SerializesModels;

    public $email_data;

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

    public function build()
    {
        return $this->view('emails.welcome')->with(['email_data' => $this->email_data]);
    }
}
  /* Create Data Array For Email */
        $email_data = array(
            'first_name'=>'John', 
            'last_name'=>'Doe', 
            'email'=>'john@doe.com',
            'password'=>'temp',
        );

        /* Send Email */
        Mail::to($user->email)->send(new Welcome($email_data));

这是正确的吗?当我尝试使用此方法时,它似乎没有将数据传递到电子邮件模板。然后如何在视图中访问此数据?

您不需要使用(['email\u data'=>$this->email\u data])访问此部分,因为如果属性是公共的,您可以在视图中访问它

<?php

namespace App\Mail;

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

class Welcome extends Mailable
{
    use Queueable, SerializesModels;
    public $firstName;
    public $lastName;
    public $email;
    public $password;
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($firstName, $lastName, $email, $password)
    {
        $this->firstName = $firstName;
        $this->lastName = $lastName;
        $this->email = $email;
        $this->password = $password;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('emails.orders');
    }
}
您正在传递一个数组,因此必须访问如下值:

$email_data['email'] // ...

有两种方法可以通过视图传递数据。首先,mailable类中定义的任何公共防御都会自动通过视图

<?php

namespace App\Mail;

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

class Welcome extends Mailable
{
    use Queueable, SerializesModels;
    public $firstName;
    public $lastName;
    public $email;
    public $password;
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($firstName, $lastName, $email, $password)
    {
        $this->firstName = $firstName;
        $this->lastName = $lastName;
        $this->email = $email;
        $this->password = $password;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('emails.orders');
    }
}
在刀片视图中

<div>
    First Name: {{ $firstName }}
    Last Name: {{ $lastName }}
    Email: {{ $email }}
    Password: {{ $password }}
</div>
<div>
    First Name: {{ $firstName }}
    Last Name: {{ $lastName }}
    Email: {{ $email }}
    Password: {{ $password }}
</div>

名字:{{$firstName}
姓氏:{{$lastName}
电子邮件:{{$Email}
密码:{{$Password}}

你试过这种方法吗

namespace App\Mail;

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

class Welcome extends Mailable
{
    use Queueable, SerializesModels;

    public $data;

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

    public function build()
    {
       return $this->view('emails.welcome')->with('data', $this->data);
    }
}
然后在控制器中创建数据数组

$data = [
    'first_name'=>'John', 
    'last_name'=>'Doe', 
    'email'=>'john@doe.com',
    'password'=>'temp'
];

\Mail::to($user->email)->send(new Welcome($data));
请确保您添加了

use Mail;
use App\Mail\Welcome;
在你的控制器里

您可以像这样访问视图中的数据

{{ $data['first_name'] }}
{{ $data['last_name'] }}
{{ $data['email'] }}
{{ $data['password'] }}


您也可以尝试使用(['email\u data'=>$this->email\u data])来访问此属性

您不需要此部分
->
如果属性是公共的,您可以在视图中访问它。我尝试过不使用该部分,但在视图中访问时会得到未定义的变量:email。已经尝试过$email和$email\u data->email像这样尝试
$email\u data['email']
尝试
返回$this->查看('emails.welcome',compact('email\u data'))
@Maraboc-完美,这就解决了!