Laravel 8为单条ID的show页添加PDF导出功能时路由未找到错误求解
问题解决步骤
错误原因
你当前报错是两个问题导致的:
- 自定义的each_print路由没有显式指定路由名称,Laravel不会自动给非资源路由加
products.前缀的命名 - 路由没有定义
{product}参数占位符,无法传递产品ID,也无法触发控制器的隐式模型绑定
修复步骤
- 第一步:修改
routes/web.php配置,注意自定义路由要放在资源路由的前面:
// 新增name方法指定路由名,新增{product}参数占位符 Route::get('products/each_print/{product}', [ProductController::class, 'each_print'])->name('products.each_print'); Route::resource('products', ProductController::class);
- 第二步:修改
ProductController的each_print方法,把产品数据传给PDF视图,否则视图无法读取对应ID的产品信息:
public function each_print(Product $product) { // 把$product变量传递给视图 $pdf = \PDF::loadView('products.each_print', compact('product')); return $pdf->stream('each_print.pdf'); }
- 第三步:你已经修改的
index.blade.php里的打印按钮代码无需调整,路由配置生效后即可正常访问。
内容的提问来源于stack exchange,提问作者bluetail
相关产品推荐
相关产品推荐

