[英]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.