2016-05-22 3 views
0

У меня есть ссылка pass id на контроллер. Первый сценарий с параметром $id в функции contrller вызывает ошибку Missing argument 1 for App\Http\Controllers\ProductController::edit(). когда я меняю его, чтобы запросить, он работает, что я ожидал, но я не понимаю, почему laravel can not map id в строке запроса для varaible $ id в функции контроллера?Параметр laravel pass by href as variable вместо объекта Request

Контроллер

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' => '[email protected]', 'as'=>'product.edit']); 

EDITED вот изменения, которые я делаю и результат: Маршруты

Route::get('product/edit/{id}', ['uses' => '[email protected]', '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 
... 

, как вы видите, что ожидает запроса объекта, но я хочу, чтобы отправить его только varible ..

ответ

1

Вам необходимо заменить {id} на маршрут значением $ product-> id, когда вы делаете запрос HTTP GET.

Пример: -

Предположим, если ваш идентификатор продукта 334455, то URL при выполнении запроса будет https://www.yoursitename.com/product/edit/334455

Попробуйте это, и он будет работать.

+0

Да, это связано с этим, но на самом деле я хотел сделать это без изменения маршрута. Я имею в виду: «Маршрут :: получить (« продукт/редактировать », ..)» и использовать лезвие с именем параметра: « TyForHelpDude

+1

вы можете использовать необязательные параметры в маршруте как Route :: get ('product/edit/{id?}', ['uses' => 'ProductController @ отредактируйте ',' как '=>' product.edit ']) просто добавьте в {id?} , а затем вы можете получить доступ к маршруту с параметром и без него. вы можете использовать, если условия для этого в противном случае контроллер –

+0

это то, что я ищу. спасибо bro – TyForHelpDude

1

Вам нужно добавить параметр к вашим маршрутам:

Route::get(
    'product/edit/{id}', // <-- Add this 
    ['uses' => '[email protected]', 'as'=>'product.edit'] 
); 
+0

Ty для ответа, но на этот раз он выбрасывает «NotFoundHttpException». – TyForHelpDude

+0

Вы проверили, существует ли маршрут с таким идентификатором? –

Смежные вопросы