Поисковой фильтр на основе GET-параметров в laravel?

Реализуя фильтр на странице поиска на основе GET-параметров столкнулся с проблемой генерации url-адресса для кнопок фильтра. Для того, чтобы сохранять текущие параметры поиска я делаю так-
<a href="/search?{{($request->q ? "q=$request->q" : '') . ($request->sort ? "&sort=$request->sort" : '') . "&section=photoreports"}}">Фоторепортажи</a>

Как бы мне это сделать, используя именованный роут, как это принято. Таких кнопок на странице много, выглядит некрасиво, плохо поддерживаемо и если роут, например изменится, то всё сломается.
  • Вопрос задан
  • 306 просмотров
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Один из вариантов:
route(
  'route.name',
  array_merge(
      request()->query(),
      [
          'sortBy' => 'relevance_score',
          'sortOrder' => ($currentSortBy === 'relevance_score' && $currentSortOrder === 'asc') ? 'desc' : 'asc',
      ]
   )
)


Вроде, есть что-то более красивое у объекта запроса, не помню почему мы написали именно так у себя.
Ответ написан
@Kostik_1993
PHP Backend Developer, Laravel, Yii, Vue, Node.js
Для реализации такого вариант Алексей Уколов мне кажется очень подходит. Это для случая если вам нужно создать ссылку с одной страницы на другую.

Если же например нужно расширить текущий адрес и дополнить/заменить параметры, можно использовать
{{ request()->fullUrlWithQuery(['foo' => 'bar']) }}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы