【问题标题】:Passing data in Laravel between a controller and a mailable在 Laravel 中的控制器和可邮寄数据之间传递数据
【发布时间】:2017-12-31 07:56:04
【问题描述】:

在我将模型记录的创建表单提交到邮件后,我似乎无法传输数据。我想我大部分都是对的,但我坚持通过控制器和我的可邮寄之间的间隙传递数据。

我有一个具有以下功能的发货控制器:

public function store(Request $request)
{

    $this->validate(request(), [

        'pro_number' => 'required',
        'shipment_origin' => 'required'
        /*'piecesNumber' => 'required' (had to remove for now, but must review)*/

    ]);

    $user_id = Auth::id();

    $input = $request->all();

    //Save Initial Shipment Data
    $shipment = new Shipment();
    $shipment->pro_number = request('pro_number');
    $shipment->shipment_origin = request('shipment_origin');
    $shipment->date = request('date');
    $shipment->due_date = request('due_date');
    $shipment->tractor_id = request('tractor_id');
    $shipment->trailer_id = request('trailer_id');
    $shipment->driver_id = request('driver_id');
    $shipment->notes = request('notes');
    $shipment->shipper_no = request('shipper_no');
    $shipment->ship_to = request('ship_to');
    $shipment->ship_from = request('ship_from');
    $shipment->bill_to = request('bill_to');
    $shipment->bill_type = request('bill_type');
    $shipment->load_date = request('load_date');
    $shipment->shipment_status = 0;
    $shipment->created_by = $user_id;

    $shipment->save();

    //Save Shipment Details

    for ($i = 0; $i < count($request->shipment_details['piecesNumber']); $i++) {

        Shipment_Detail::create([
            'shipment_id' => $shipment->id,
            'pieces_number' => $request->shipment_details['piecesNumber'][$i],
            'pieces_type' => $request->shipment_details['piecesType'][$i],
            'rate_type' => $request->shipment_details['rateType'][$i],
            'charge' => $request->shipment_details['charge'][$i],
            'weight' => $request->shipment_details['weight'][$i],
            'hazmat' => $request->shipment_details['hazmat'][$i],
            'description' => $request->shipment_details['description'][$i] ]);
    }
    $user = Auth::user()->email;

    Mail::to($user)->send(new newFreightBill($shipment));

  Session::flash('success_message','Freight Bill Successfully Created'); //<--FLASH MESSAGE

    //Return to Register
  return redirect('/shipments/i/'.$shipment->url_string);

}

现在你可以看到底部附近有一行“Mail::to($user)->send(new newFreightBill($shipment));”,我想做的是移动复制从提交的 $shipment 到可邮寄的数据

我的 newFreightBill 可邮寄:

<?php

namespace App\Mail;

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

use App\Shipment;

class newFreightBill extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public $shipment;

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

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->from('MYEMAIL')
                    ->view('emails.shipments.created')->with(['shipment', $this->shipment]);
    }
}

和我的邮件模板(我在测试中收到):

<div>
    Pro Number: {{ $shipment['pro_number'] }}
</div>

正如您所见,模板至少可以说非常简单。我收到以下电子邮件:

专业编号:

但绝对没有别的,没有实际数字。所以我知道问题是将表单提交中的数据传递给可邮寄变量。

【问题讨论】:

    标签: laravel email


    【解决方案1】:

    如果您在 Mail 类上使用属性,例如 public $shipment,则不应使用 with() 方法。您的类的属性在您的视图中可用,无需使用with

    然后你应该这样做:专业编号:{{ $shipment-&gt;pro_number }}

    哦,是的,还有这个:$shipment = $this-&gt;shipment; 倒退了,应该是$this-&gt;shipment = $shipment;

    【讨论】:

    • 如果我提出您所说的建议,我会收到以下错误:尝试获取参考 {{ $shipment->pro_number }} 的非对象属性
    • @Matthew 我更新了我的答案,再次检查最后一部分:)
    • 是的!再次感谢您的帮助!
    猜你喜欢
    • 2020-10-12
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多