У меня есть список новостей на моем сайте laravel. На странице /news/
показан быстрый список историй.Laravel: Фильтрация в красноречиве с дополнительным пользовательским вводом
Теперь я хочу разрешить пользователям фильтровать новости. Например, показывают только «спортивные» истории.
В моем контроллере я сделал это:
$input = Input::all();
$events = DB::table('news')
->where('category', '=', $input['type'])
->order_by('created_at', 'desc')
->paginate(10);
Теперь, это позволяет мне посетить /news?type=sports
и это показывает только правильно новости в рамках спортивной категории. Это работает только в том случае, если задан тип, и, очевидно, будет терпеть неудачу, если нет указанного типа.
Какое это лучшее решение? Я знаю, что могу проверить, существует ли $input['type']
, и если да, напишите совершенно новый, второй код "$news = DB::table('news')..."
, но я думаю, что я действительно хочу иметь несколько пользовательских входов, что сделает этот параметр неработающим. Например, что, если я хочу сортировать по типу и местоположению? Что-то вроде /news?type=sports&area=chicago
- что бы я тогда сделал?
Я знаю, что, должно быть, мне не хватает чего-то очевидного. Может кто-то указать мне верное направление?
Вы должны быть используя URI, хотя, как параметр маршрута, вместо того, чтобы иметь его через GET. – rmobis