首页 > 解决方案 > Laravel 邮件刀片传递变量

问题描述

我需要将一些变量传递给我的发送电子邮件。

这是我的代码:

  $data = [
  'first' => $request->first,
  'last' => $request->last,
  'business_org' => $request->business_org,
  'instagram' => $request->instagram,
  'email' => $request->email,
  'phone' => $request->phone,
  'unique' => $request->unique,
  'purchased' => $request->products_purchased,
  'city' => $request->city,
  'state' => $request->state,
  'filename' => $fileName
];

  // send email with details
    Mail::send('emails.justshoot', $data, function($message) {
      $message->from('us@something.com', 'Just Shoot Upload');

      $message->to('myemail@gmail.com')->cc('myemail@gmail.com');
    });

然后我尝试访问该变量,以便可以在我的电子邮件中显示它。emails.justshoot.blade.php

{{$data}}给出一个错误。我究竟做错了什么?

标签: laravel

解决方案


你对你正在做的事情完全没问题,但是第二个参数是传递给视图的数据,并且与with([])调用视图的方法一样,传递的数组将为每个条目生成一个对象,所以你是什么你正在生成$first, $last, $business_org并且$data只是数组的名称,所以它没有作为元素传递给视图:如果你想要这个,你应该传递[$data]给邮件发送:

$data = [
  'first' => $request->first,
  'last' => $request->last,
  'business_org' => $request->business_org,
  'instagram' => $request->instagram,
  'email' => $request->email,
  'phone' => $request->phone,
  'unique' => $request->unique,
  'purchased' => $request->products_purchased,
  'city' => $request->city,
  'state' => $request->state,
  'filename' => $fileName
];

  // send email with details
    Mail::send('emails.justshoot', [$data], function($message) {
      $message->from('us@something.com', 'Just Shoot Upload');

      $message->to('myemail@gmail.com')->cc('myemail@gmail.com');
    });

然后在视图中你可以做{{$data}}

提示:您应该使用 php artisan 创建一个邮件,然后您就可以以更优雅的方式做任何您想做的事情


推荐阅读