2016-06-24 5 views
0

У меня есть foreach с моим списком продуктов в моем index.blade.php, он работает хорошо, теперь я пытаюсь фильтровать, я сделал свое меню с моими категориями и полами.laravel 5.1 контроллер ошибок Отсутствует аргумент 1

Я хотел бы показать продукты в категории = «футболка» и пол = «женщина», но у меня есть эта ошибка:

ErrorException in StoreController.php line 36: Missing argument 1 for dixard\Http\Controllers\StoreController::products()

Я использую эту ссылку:

<a href="{{url('shop', ['category'=> 't-shirt', 'gender' => 'woman'])}}" title=""> 
    <span>Woman</span> 
</a> 

мой маршрут:

Route::get('shop', '[email protected]'); 
Route::get('shop/{category}/{gender}','[email protected]'); 

Мой контроллер

public function products($category, $gender) 
    { 


      $gender_id= Gender::where('gender', $gender)->first(); 
      $category_id= Category::where('name', $category)->first(); 
      $filter = ['gender_id' => $gender_id->id, 'category_id' => $category_id->id]; 
      $products = Product::where($filter)->orderBy('id', 'asc')->get(); 
      $categories = Category::all(); 
      return view('store.index', compact('products','categories')); 


    } 
+0

Какая линия 36 в вашем коде контроллера? – Yani

+0

@Yani line 36 -> public function products ($ category, $ gender) –

ответ

0

Используйте функцию маршрута (https://laravel.com/docs/5.1/routing)

<a href="{{route('shop', ['category'=> 't-shirt', 'gender' => 'woman'])}}" title=""> 
<span>Woman</span> 
</a> 
+0

У меня есть эта ошибка, если я использую маршрут вместо url: «ОшибкаException в строке UrlGenerator.php 306: Маршрут [магазин] не определен. (Вид: C: \ xampp \ htdocs \ 2016 \ resources \ views \ layouts \ main.blade.php) (Просмотр: C: \ xampp \ htdocs \ 2016 \ resources \ views \ layouts \ main.blade.php) " –

+0

Вы пытались 'url ('/ shop/t-shirt/woman')' –

+0

результат -> страница не найдена –

1

Вы можете использовать именованные маршруты. В этом нет ничего особенного.

Route::get('shop/{category}/{gender}', [ 
    'uses' => [email protected]', 
    'as' => 'shopRoute' 
]); 

И ваш URL:

route('shopRoute', ['category'=> 't-shirt', 'gender' => 'woman']) 
+0

он не работает, он дает мне ту же ошибку –

+0

@ Diego182 посмотри обновленный ответ –

+0

Я попробовал! такая же ошибка: ОшибкаException в StoreController.php строка 36: Отсутствует аргумент 1 для dixard \ Http \ Controllers \ StoreController :: products() –

0

я установил, как это:

Route::get('shop','[email protected]'); 
Route::get('shop/{categoryA}','[email protected]'); 
Route::get('shop/{categoryB}/{genderB}','[email protected]'); 
Route::get('shop/{categoryC}/{genderC}/{slugC}','[email protected]'); 

Я не знаю почему, но я изменил, что переменные, которые я прохожу на мой маршрут и работать!

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