2017-11-30 5 views
0

モデルレコードの作成フォームをmailableに送信した後にデータが転送されないようです。私はそれが大部分で正しいと思うが、私はコントローラーと私のmailableの間のギャップを通してデータを渡すことに固執している。Laravelでコントローラと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); 

} 

を::($ユーザ)へ - >(新newFreightBill($送ります出荷)); mailable

に、私は何をやっているしたいと思いますが、コピーに提出$出荷からデータを移動している」

マイnewFreightBillのmailable:

<?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]); 
    } 
} 

と私のメールテンプレート(WH私は私のテストで受け取る):

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

あなたが見ることができるように、テンプレートは非常に簡単です。

Pro Number:

他にも実際の番号はありません。だから私は、フォームのデータを送信可能な変数に渡すという問題があることを知っています。

答えて

1

メールクラスのプロパティをpublic $shipmentのように使用している場合は、with()メソッドを使用しないでください。クラスのプロパティは、withを使用せずに、ビューで使用できます。

そして、あなたはこれを行う必要があります:Proの数:{{ $shipment->pro_number }}

ああ、この:$shipment = $this->shipment;が後方にある、それは$this->shipment = $shipment;する必要があります。

+0

私はあなたが述べた提案をすると、私は次のエラーが表示されます:{{$ shipment-> pro_number}}を参照して非オブジェクトのプロパティを取得しようとしています – Matthew

+0

@Matthew私は自分の答えを更新し、 :) –

+0

@Matthewそれは動作しましたか? –

関連する問題