У меня есть кнопка поиска и система разбивки на страницы. Они отлично работают. Но когда я что-то искал, страница была разбита на номера. После нажатия на следующую страницу. Поисковый запрос пропал. После этого все значения попадают на page2. Не искали значения.
Моя кнопка поиска меняет URL-адрес, например, /en/news?q=foo
Моя разбивка на страницы меняет URL-адрес (кстати по умолчанию) /en/news?page=2
Как я могу добавить это рядом? Или как решить проблему. Я открыт для любого решения.
Я использую для поиска.
public function scopeSearch($query, $search) {
return $query->where('title', 'LIKE', '%' .$search. '%')
->orWhere('sub_body', 'like', '%' .$search. '%')
->orWhere('body', 'like', '%' .$search. '%');
}
Также это мой контроллер:
public function index (Request $request){
$localeCode = LaravelLocalization::getCurrentLocale();
$updates = Update::latest()->take(3)->get();
$query = $request->get('q');
if ($query){
$new = $query ? News::search($query)->orderBy('id', 'desc')->paginate(10):News::all();
return view('frontend.news', compact('localeCode', 'updates', 'new', 'query'));
}
else
{
$new = News::orderBy('id', 'desc')->paginate(10);
return view('frontend.news', compact('localeCode', 'updates', 'new', 'query'));
}
}
Я надеюсь, что смогу выразить свое собственное.






Это объясняется в документации для отображение результатов пагинации:
Appending To Pagination Links
You may append to the query string of pagination links using the appends method. For example, to append sort=votes to each pagination link, you should make the following call to appends:
{{ $users->appends(['sort' => 'votes'])->links() }}
Я нахожу ваш текущий код довольно запутанным. Думаю, можно это так переписать
public function index (Request $request){
$localeCode = LaravelLocalization::getCurrentLocale();
$updates = Update::latest()->take(3)->get();
$query = $request->get('q');
$new = $request->filled('q') ? News::search($query) : News::query();
$new = $new->orderBy('id', 'desc')->paginate(10);
return view('frontend.news', compact('localeCode', 'updates', 'new', 'query'));
}
и в представлении вам придется использовать
{{ $new->appends(['q' => $query])->links() }}
Поиск + пагинация сейчас работает отлично. Но я смотрю на твою прямо сейчас. Еще раз спасибо. Шахты очень сложные. Ты прав.
{{ $users->appends($_GET)->links() }}
которые добавляют все значение вашего фильтра в одну строку
Попробуйте использовать {{$ collection-> appends (request () -> all ()) -> links ()}}
@ AliÖzen Я добавил еще код к ответу, может быть, он вам поможет. Причина, по которой я переписал метод, заключается в том, что вы в основном выполняли два раза одно и то же в разных построителях запросов, что может быть громоздким, если вы в будущем расширите функциональность разбитого на страницы списка (потому что вам всегда придется делать это дважды). С вышесказанным вы сможете делать все сразу.