Запоминание результатов при переходе на страницу поиска в Laravel

Я создал страницу поиска, используя Laravel, в верхней части которой есть фильтры "текст для поиска". Когда мышь убирается из фильтра, JavaScript страницы запускает Ajax-вызов, а затем возвращает результаты.

Поскольку я также включил разбиение на страницы (с помощью Ajax), когда я нажимаю на страницу 2 (ссылка выглядит следующим образом: http://project.test/customers?page=2), фильтры вверху сохраняют любой ранее введенный текст, и результаты поиска проводятся, что как раз то, что мне нужно!

Теперь проблема:

База данных у меня есть две основные таблицы.

  1. Клиенты

  2. Покупки

Отношения: у клиента может быть много покупок. Любая данная покупка принадлежит одному покупателю.

Я построил страницу поиска, чтобы пользователь мог искать клиентов, которые соответствуют заданным критериям поиска (например, те, которые принадлежат определенному городу или стране, например).

В приведенной ниже таблице поисковых фильтров, в которых отображаются все соответствующие записи о клиентах, у меня есть столбец с кнопкой покупок, которая затем перенаправляет пользователя на страницу покупок этого конкретного клиента (здесь кнопка покупок переходит по ссылке в форму project.test / клиенты /{{ID}}

{Id} проходит по маршруту, который затем загружает новую страницу, которая показывает все покупки этого конкретного клиента.

Теперь у меня есть кнопка "вернуться" на этой странице покупки, которая идет по следующей ссылке:

project.test / клиентов

Затем он загружает исходную страницу поиска (но загружает ее заново).

ЭТО ПРОБЛЕМА!!!

Поскольку страница загружается заново (по ссылке: project.test/ Customers)

Фильтры поиска очищаются, и на странице вместо этого отображаются ВСЕ клиенты. Таким образом, пользователь затем должен повторно ввести все критерии поиска, что раздражает пользователя, поскольку ему / ей часто приходится изменять пакет записей о покупках для определенного набора клиентов, которые соответствуют заданному набор критериев поиска - и, скорее всего, не нужно будет повторно вводить одни и те же критерии снова и снова при переходе на страницу покупки клиента, а затем обратно на главную страницу поиска.

Учитывая эту проблему, у меня возникает вопрос: возможно ли концептуально, с помощью Laravel, перейти на другую страницу, со страницы поиска, а затем, используя какой-либо метод, вернуться на исходную страницу поиска, для поисковых фильтров и результатов?, показывая раньше, чтобы все еще быть там? - Это было бы очень полезно иметь!

Я видел, как это делалось на других сайтах, возможно, с использованием других веб-технологий, но я просто не уверен, как начать / с чего начать делать это с Laravel / PHP?

Я ценю любую помощь, заранее спасибо!

1 ответ

Сохраните критерии поиска в сеансе пользователя, передавая их обратно на страницу поиска при переходе назад.

Допустим, у вас есть контроллер с функцией поиска маршрута:

public function search (Request $request)
{
    // store the search criteria 
    session(['search_criteria' => $request->input()]);

    // return the results
}

Затем в другой функции контроллера добавьте исходные параметры в ответ:

public function someRouteMethod (Request $request)
{
    return redirect()->with('search_criteria', session('search_criteria'))->to('/search');
}

Затем на странице поиска снова заполните форму $search_criteria данные:

<input value="{{ !empty($search_criteria) ? $search_criteria['foo'] : '' }}" name="foo">
Другие вопросы по тегам