如何获取Blade视图URL中的product id并在Laravel控制器中使用
问题原因
路由参数传递断裂、第二个表单没有正确承接第一个页面传过来的商品ID,按以下步骤修改即可:
1. 修正路由配置(web.php)
删除原有错误路由,替换为以下内容:
// 处理第一个页面的商品选择提交 Route::post('sell/{product_id}', [\App\Http\Controllers\ProductsController::class, 'sell'])->name('sell'); // 展示尺码、价格录入页,携带选中的商品ID Route::get('sell/input/{product_id}', [\App\Http\Controllers\ProductsController::class, 'showInputForm'])->name('sell.input'); // 提交录入信息到数据库 Route::post('select/{product_id}',[\App\Http\Controllers\ProductsController::class, 'store'])->name('sell.store');
2. 补充/修改控制器逻辑(ProductsController.php)
// 处理第一个页面的商品选择请求,跳转到录入页 public function sell($product_id) { return redirect()->route('sell.input', ['product_id' => $product_id]); } // 渲染第二个录入视图,将商品ID传递到视图层 public function showInputForm($product_id) { // 此处的second.blade.php替换为你第二个视图的实际文件名 return view('second', compact('product_id')); } // 最终数据存储逻辑 public function store($product_id){ request()->validate([ 'price' => 'required|max:255', 'size' => 'required' ]); ListedProducts::create([ 'user_id' => auth()->id(), 'shoe_id' => $product_id, 'size' => request('size'), 'price' => request('price') ]); return redirect('/home'); }
3. 修正第二个视图的表单提交地址
将第二个视图的form起始标签替换为以下内容,绑定携带商品ID的提交路由:
<form action="{{ route('sell.store', ['product_id' => $product_id]) }}" method="post">
修改完成后即可正常获取shoe_id完成全量数据存储。
内容的提问来源于stack exchange,提问作者sondacostin
相关产品推荐
相关产品推荐

