我根据用户输入生成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);
}
答案 0 :(得分:1)
存储合约id
in the session可能是您最好的选择。如果您只需要在下一个请求中使用它,那么您可以flash it(事实上,这正是redirect(..)->withInput(sessionKey, val)
does)。
类似的东西:
合约控制员
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'));
// ...
}
答案 1 :(得分:0)
我可能会创建一个带有静态方法的PDF模型类来生成PDF。
class PDF
{
public static function generatePDF($id, $isDownload)
{
// ...
}
}
然后,您只需从Contact控制器调用静态方法,并将所需数据作为参数传递。
public function store(Request $request)
{
// ...
\PDF::generatePDF($contract->id, $request->has('download'));
// ...
}