我有一个链接将id
传递给控制器。在控制器函数中使用$id
参数的第一个方案会引发Missing argument 1 for App\Http\Controllers\ProductController::edit()
错误。当我更改它以请求它按预期工作时,但我不明白为什么laravel不能将查询字符串中的id映射到控制器函数中的变量$ id?
控制器
public function edit($id)//this throws missing argument exception, if I change $id to Request $request it works..
{
return view('frontend.product.create');
}
刀片
<a data href="{{ route('product.edit',['id'=>$product->id]) }}"><i class="fa fa-edit"></i> </a>
路线
Route::get('product/edit', ['uses' => 'ProductController@edit', 'as'=>'product.edit']);
EDITED 以下是我所做的更改和结果: 的路线
Route::get('product/edit/{id}', ['uses' => 'ProductController@edit', 'as'=>'product.edit']);
结果:
NotFoundHttpException in compiled.php line 8277:
in compiled.php line 8277
at RouteCollection->match(object(Request)) in compiled.php line 7511
at Router->findRoute(object(Request)) in compiled.php line 7476
at Router->dispatchToRoute(object(Request)) in compiled.php line 7468
at Router->dispatch(object(Request)) in compiled.php line 2307
...
如你所见它期望Request对象,但我想发送它只是一个变量..
答案 0 :(得分:1)
您需要将参数添加到路线中:
Route::get(
'product/edit/{id}', // <-- Add this
['uses' => 'ProductController@edit', 'as'=>'product.edit']
);
答案 1 :(得分:1)
在发出HTTP GET请求时,您需要使用$ product-&gt; id值替换路由中的{id}。
示例: -
假设您的产品ID是334455,那么提出请求时的网址就是 https://www.yoursitename.com/product/edit/334455
试试这个,它会起作用。