Итак, на данный момент у меня есть обычный ресурсный маршрут с индексом, создать, сохранить, отредактировать, обновить, обычный. В Индексе у меня есть несколько параметров фильтра, которые отфильтровывают записи. Достаточно просто. Я хочу, чтобы параметры фильтра были сохранены, а при создании, обновлении или удалении этого параметра, когда вы будете перенаправлены обратно в индекс, параметры фильтра все равно будут сохранены и отфильтрованы. У меня проблема в том, что я не хочу перенаправлять без необходимости. Фильтр находится в форме, и он продолжает отправлять в индекс каждый раз, когда его значения изменяются. В этом случае я не хочу, чтобы это было перенаправление. До сих пор я пытался разобраться, если это редирект или просто фильтр, который изменился. Я хочу быть в состоянии сказать, совпадает ли предыдущий маршрут с текущим маршрутом в этом случае индексный маршрут. Однако все ресурсы начинаются с одного и того же имени маршрута. URL перенаправления сохраняется в сеансе в переменной «cultivar_form_return_url», а затем помещается в переменную, которая будет использоваться для проверки необходимости перенаправления.
session(['cultivar_form_return_url' => $request->fullUrl()], '');
$redirect_url = $request->session()->get('cultivar_form_return_url', '');
if($redirect_url && !$has_filtered && !$filter) {
return redirect($redirect_url);
}
$cultivars = $query
->orderBy('name')
->paginate(20);
return view('database.cultivars.index',compact('cultivars','filter','redirect_url'));
$ redirect_url - это URL, созданный при отправке запроса на фильтрацию. Я использую этот URL для перенаправления, когда я возвращаюсь из создания, обновления или удаления.
Который содержит параметры для поиска. Я проверяю, существует ли redirect_url, для второго параметра перенаправления я создал переменную, которая начинается как false, и если в моем запросе есть параметры для фильтра в каждой функции, я устанавливаю переменную в true следующим образом.
if($request->has('input')) {
$has_filtered = true;
$query = $query->where('input', $request->input);
$filter['input'] = $request->input;
}
Последний параметр для проверки перенаправления - это переменная фильтра, которая содержит параметры моего фильтра, которые начинаются как пустые и устанавливаются для каждой функции, если этот конкретный фильтр установлен.
$has_filtered = false;
$query = (new Cultivar);
$filter = [
'search' => null,
'crop' => null,
'is_rootstock' => null,
'is_public' => null,
];
Я хотел бы различать перенаправления и параметры фильтра, которые просто меняются. Благодарю вас. Любая помощь приветствуется.