将多个参数从 laravel5 中的路由传递给控制器
pass multiple parameters to controller from route in laravel5
我想在 laravel5 中将多个参数从路由传递到控制器。
即,我的路线是,
Route::get('quotations/pdf/{id}/{is_print}', 'QuotationController@generatePDF');
我的控制器是,
public function generatePDF($id, $is_print = false) {
$data = array(
'invoice' => Invoice::findOrFail($id),
'company' => Company::firstOrFail()
);
$html = view('pdf_view.invoice', $data)->render();
if ($is_print) {
return $this->pdf->load($html)->show();
}
$this->pdf->filename($data['invoice']->invoice_number . ".pdf");
return $this->pdf->load($html)->download();
}
如果用户要下载PDF
,URL
会是这样,
/invoices/pdf/26
如果用户要打印PDF
,URL
会像这样,
/invoices/pdf/26/print or /invoices/print/26
怎么可能在laravel5?
首先,你的路线或你的例子中的 url 是无效的,在一个地方你使用 quotations
而在另一个地方 invoices
通常你不想重复 urls 到同一个动作,但如果你真的需要它,你需要创建额外的路线:
Route::get('invoices/print/{id}', 'QuotationController@generatePDF2');
并在您的控制器中添加新方法
public function generatePDF2($id) {
return $this->generatePDF($id, true);
}
我想在 laravel5 中将多个参数从路由传递到控制器。
即,我的路线是,
Route::get('quotations/pdf/{id}/{is_print}', 'QuotationController@generatePDF');
我的控制器是,
public function generatePDF($id, $is_print = false) {
$data = array(
'invoice' => Invoice::findOrFail($id),
'company' => Company::firstOrFail()
);
$html = view('pdf_view.invoice', $data)->render();
if ($is_print) {
return $this->pdf->load($html)->show();
}
$this->pdf->filename($data['invoice']->invoice_number . ".pdf");
return $this->pdf->load($html)->download();
}
如果用户要下载PDF
,URL
会是这样,
/invoices/pdf/26
如果用户要打印PDF
,URL
会像这样,
/invoices/pdf/26/print or /invoices/print/26
怎么可能在laravel5?
首先,你的路线或你的例子中的 url 是无效的,在一个地方你使用 quotations
而在另一个地方 invoices
通常你不想重复 urls 到同一个动作,但如果你真的需要它,你需要创建额外的路线:
Route::get('invoices/print/{id}', 'QuotationController@generatePDF2');
并在您的控制器中添加新方法
public function generatePDF2($id) {
return $this->generatePDF($id, true);
}