laravel通过href传递参数作为变量而不是Request对象

时间:2016-05-22 23:45:16

标签: php laravel laravel-5

我有一个链接将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对象,但我想发送它只是一个变量..

2 个答案:

答案 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

试试这个,它会起作用。

相关问题