Как настроить динамическое количество параметров в URI (Routes) laravel?

Допустим на сайте есть список товаров, мне необходимо настроить их фильтрацию.
Например вывод товаров по городу, по категории или по производителю. По отдельности каждый я могу обработать, но что делать, если надо сделать выборку по городу и по категории? или по городу и производителю?

Пытаюсь сделать так (код в Routes.php):
Route::group(['prefix' => '/{city_name?}/{category_name?}/{firm_name?}/'], function() {
            Route::get('/', 'Controller@index');
        });


В контроллере принимаю эти значения:
public function index($city_name=0,$category_name=0,$firm_name=0){}


Если у меня есть все 3 параметра, то все хорошо, но если одного нет, то все параметры сдвигаются и ничего не работает.
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
codeschemer
@codeschemer
Твой routes мог бы выглядить как-то так
Route::match(['get', 'post'], '/', 'Controller@index');

а твой контроллер как-то так
public function index(Request $request)
  {
    $cityName = '';
    $categoryName= '';
    $firmName= '';
    if(isset($request->city_name) || isset($request->category_name) || isset($request->firm_name)){
      //POST случай делаешь свои выборки, получаешь $списокТоваров
      }
       if(!isset($списокТоваров)){
      //GET случай, когда первый раз зашёл на страницу.
      }
      return view('/', compact('списокТоваров', 'cityName ', 'categoryName', 'firmName'));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы