簡體   English   中英

使用Laravel中的兩個控制器引用相同的變量

[英]Reference same variable using two controllers in laravel

我正在根據用戶輸入生成pdf。 我可以調用數據庫並使用all()獲取所有合同信息。 但是,我只想為其中一個值生成pdf。 每個合同都有一個我可以使用的自動遞增ID。

控制器之間進行通信的最佳方式是什么,因此僅使用我要參考的合同來生成pdf?

PdfGenerateController:

public function pdfview(Request $request)
    {
        $users = DB::table("users")->get();
        $contract = Contract::all();

        view()->share('users',$users);

        if($request->has('download')){
            // Set extra option
            PDF::setOptions(['dpi' => 150, 'defaultFont' => 'sans-serif']);
            $users = DB::table("users")->get();

            // pass view file
            $pdf = App::make('dompdf.wrapper');
            $pdf->loadHTML

            ($contract);


            return $pdf->stream();
        }
        return view('sell.contract');
    }

合同控制器(用戶輸入)

public function store(Request $request)
{
    $contract = new Contract;
    $contract->buyer_first_name = $request->input('buyer_first_name');
    $contract->listing_id = $request->input('listing_id');
    $contract->save();
    return redirect()->route('generate-pdf')->with('contracts',$contract);
}

在會話中存儲合同id可能是最好的選擇。 如果只需要在下一個請求上使用它,則可以將其刷新 (實際上,這正是redirect(..)->withInput(sessionKey, val)所做的redirect(..)->withInput(sessionKey, val) )。

像這樣:

合同控制人

public function store(Request $request)
{
    // ...
    $contract->save();
    session(['contract_id' => $contract->id]);
    return redirect()->route('generate-pdf');
}

或只是閃爍:

public function store(Request $request)
{
    // ...
    $contract->save();
    return redirect()->route('generate-pdf')->with('contract_id', $contract->id);
}

PdfGeneratteController

public function pdfview(Request $request)
{
    $contract = Contract::findOrFail(session('contract_id'));
    // ...
}

我可能會使用靜態方法創建PDF模型類以生成PDF。

class PDF
{
    public static function generatePDF($id, $isDownload)
    {
        // ...
    }
}

然后,您可以簡單地從Contact控制器調用靜態方法,並將所需的數據作為參數傳遞。

public function store(Request $request)
{
    // ...

    \PDF::generatePDF($contract->id, $request->has('download'));

    // ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM