Подтвердить что ты не робот

Как автоматически добавить строку запроса в laravel pagination links?

Я работаю над фильтром поиска при нажатии на флажок, с вызовом Laravel и Ajax. Поэтому я получаю результаты, когда я нажимаю на флажок. мой запрос выглядит следующим образом:

    $editors = User::with(['editor.credentials','editor.specialties','editor.ratings']);
        $temp=$editors->whereHas('editor', function($q) use ($a_data){
            $q->whereHas('specialties',function($sq) use($a_data){
            $sq->whereIn('specialty',$a_data);
            });
        })->paginate(2);

Это дает мне все необходимые мне данные. однако как мне получить ссылки для разбивки на страницы?

    $temp->setBaseUrl('editors');
    $links = $temp->links()->render();

В настоящее время я делаю это и с $link, которые я отправляю в ответ на вызов ajax, я установил разбиение на страницы данными с данными $links. Теперь мне нужно добавить запрос на следующую страницу, например page = 2? Query = "something". Я не знаю, как мне добавить добавление оставшихся ссылок на результат в ссылки на следующую страницу. т.е. я не знаю, что должно прийти в запрос = "что-то". Может ли кто-нибудь руководить мной. спасибо

4b9b3361

Ответ 1

Проверьте ответ от @Arda, как это глобальное решение. Ниже вы можете найти, как это сделать вручную.

Используйте appends в Paginator:

$querystringArray = Input::only(['search','filter','order']); // sensible examples

// or:
$querystringArray = ['queryVar' => 'something', 'anotherVar' => 'something_else'];

$temp->appends($querystringArray);

Ответ 2

{{ $users->appends($_GET)->links() }}

Он добавит все параметры строки запроса в ссылку разбиения на страницы

Ответ 3

Добавьте это в любое место в вашем приложении (например, route.php, filters.php или что-нибудь, что автоматически загружено), не нужно редактировать какие-либо кодировки, которые уже написаны. Это безупречно работает с использованием композиций представления, и вам не нужно знать какие-либо параметры строки запроса:

////////PAGINATION QUERY STRING APPEND
View::composer(Paginator::getViewName(), function($view) {
    $queryString = array_except(Input::query(), Paginator::getPageName());
    $view->paginator->appends($queryString);
});
//////////////////

Ответ 4

Для последней версии Laravel на данный момент (5.2) вы можете просто использовать фасад Request для извлечения строки запроса и передать ее вашему методу paginator appends()

$input = Request::input();
$myModelsPaginator = App\Models\MyModel::paginate();
$myModelsPaginator->appends($input);

Ответ 5

Добавить все входные данные, кроме фактической страницы, токена формы и того, что вы не хотите передавать:

$paginatedCollection->appends(request()->except(['page','_token']));

Ответ 6

Вдохновленный предыдущими ответами, я закончил тем, что использовал сервисный контейнер для поддержки frontend + api.

В вашем [email protected]():

$this->app->resolving(LengthAwarePaginator::class, function ($paginator) {
    return $paginator->appends(array_except(Input::query(), $paginator->getPageName()));
});

Ответ 7

по вашему мнению, где вы отображаете нумерацию страниц...

{{ $results->appends(Request::except('page'))->links() }}

appends сохраняет значение строки запроса, кроме "page". не уверен, что он будет работать с запросом POST

Ответ 8

Вы можете использовать запрос помощника ввиду того же

{{ $users->appends(request()->query())->links() }}