首页 文章

在Laravel中传递控制器和可邮寄之间的数据

提问于
浏览
0

在我将模型记录的创建形式提交给mailable之后,我似乎无法获取数据 . 我认为我的大部分时间都是正确的,但我仍然坚持通过控制器和我的mailable之间的差距传递数据 .

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

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));”,我想要做的是移动复制数据提交$ mail到mailable

我的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>

正如您所看到的,模板至少可以说是非常简单 . 我收到以下电子邮件给我:

专业号码:

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

1 回答

  • 1

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

    然后你应该这样做:专业号码: {{ $shipment->pro_number }}

    哦,是的,这个: $shipment = $this->shipment; 是向后的,它应该是 $this->shipment = $shipment; .

相关问题