2016-12-06 4 views
0

У меня есть метод в мой контроллер (singleProduct):Multiple параметр ошибки маршрута Laravel

public function singleProduct($slug) 
{ 
    $product= Product::where('slug','=', $slug)->first(); 
    return view('public.product.show')->withProduct($product); 
} 

И мой маршрут:

Route::get('/{category}/{slug}',['as' => 'single.product', 'uses' => '[email protected]']); 

Мой код в виде:

<a href="{{ route('single.product', $product->category, $product->slug) }}">{{$product->title}}</a> 

Хотя я прошел оба обязательных параметра для маршрута. Мой маршрут возвращает ошибку:

Missing required parameters for [Route: single.product] [URI: {category}/{slug}]. 

ответ

3

правильный путь Ф.О. г определения маршрута Титулы, как:

route('single.product', ['category' => $product->category, 'slug' => $product->slug]) 

Таким образом, ваш маршрут зрения будет как:

<a href="{{ route('single.product', ['category' => $product->category, 'slug' => $product->slug]) }}">{{$product->title}}</a> 

Docs

+0

Спасибо человеку. Черт, я так глупо пропустить это. –

0

В определении маршрута у вас есть слизняка и категории, но в методе вы получите на самом деле просто слизняк, так что, возможно, добавив $ категорию singleProduct поможет:

public function singleProduct($category, $slug) 
{ 
    $product= Product::where('slug','=', $slug)->first(); 
    return view('public.product.show')->withProduct($product); 
} 
+0

Нужно ли использовать оба параметра в методе также? –

+0

Да, если вы определили оба маршрута, то оба должны быть в методе действий ... вы можете повернуть их к необязательным параметрам, то есть Route :: get ('/ {category}/{slug?}' , ['as' => 'single.product', 'uses' => 'LinkController @ singleProduct']); а затем функция delcaration будет выглядеть как singleProduct ($ category, $ slug = 'no-slug') –

+0

Мне нужны оба параметра для построения ссылок. –

0

Изменено мой метод:

public function singleProduct($category,$slug) 
{ 
    $product= Product::whereHas('category', function($q) use($category) { 
      $q->where('name','=', $category); 
     }) 
    ->where('slug','=', $slug)->first(); 
    return view('public.product.show')->withProduct($product); 
} 

еще такая же ошибка

Missing required parameters for [Route: single.product] [URI: {category}/{slug}].