pagination - personalizar - Enlaces de paginación Laravel sin incluir otros parámetros GET
pagination laravel 5 (9)
Estoy usando Eloquent junto con la clase de paginación de Laravel 4.
Problema: cuando hay algunos parámetros GET en la URL, por ejemplo: http://site.com/users?gender=female&body=hot
, los enlaces de paginación producidos solo contienen el parámetro de page
y nada más.
Plantilla de hoja
{{ $users->link() }}
Hay una función ->append()
para esto, pero cuando no sabemos cuántos de los parámetros GET existen, ¿cómo podemos usar append()
para incluir los otros parámetros GET en los enlaces paginados sin una gran parte de if
código desordenar nuestra plantilla de hoja?
Creo que deberías usar este código en Laravel 5, que Laracasts lo menciona. También esto funcionará no solo con la page
parámetros sino también con cualquier otro parámetro (s):
$users->appends(request()->input())->links();
Personalmente trato de evitar usar Fecades
tanto como puedo. El uso de funciones globales de ayuda es menos codificado y mucho más elegante.
EDITAR: se requiere el comentario de Connor con la respuesta de Mehdi para que esto funcione. Gracias a ambos por sus aclaraciones.
->appends()
puede aceptar una matriz como un parámetro, puede pasar Input::except(''page'')
, que debe hacer el truco.
Ejemplo:
return view(''manage/users'', [
''users'' => $users->appends(Input::except(''page''))
]);
Incluye esto en tu página de vista
$users->appends(Input::except(''page''))
No se appends()
append()
sino que se appends()
Entonces, la respuesta correcta es:
{!! $records->appends(Input::except(''page''))->links() !!}
Pase el número de página para la paginación también. Algo como esto
$currentPg = Input::get(''page'') ? Input::get(''page'') : ''1'';
$boards = Cache::remember(''boards''.$currentPg, 60, function(){ return WhatEverModel::paginate(15); });
Podrías usar
->appends(request()->query())
Ejemplo en el controlador:
$users = User::search()->order()->with(''type:id,name'')
->paginate(30)
->appends(request()->query());
return view(''users.index'', compact(''users''));
Ejemplo en la vista:
{{ $users->appends(request()->query())->links() }}
Use esta construcción, para mantener todos los parámetros de entrada excepto la página
{!! $myItems->appends(Request::capture()->except(''page''))->render() !!}
¿Por qué?
1) deshaces todo lo que agregaste para pedir así
$request->request->add([''variable'' => 123]);
2) no necesita $ solicitud como parámetro de entrada para la función
3) estás excluyendo "página"
PD) y funciona para Laravel 5.1
Tenga en cuenta que Input::all()
incluirá los ?page=
valores anteriores una y otra vez en cada página que abra.
por ejemplo, si está en ?page=1
y abre la página siguiente, se abrirá ?page=1&page=2
¡Por lo tanto, la última página valiosa será la página que ves! no la página que quieres ver
Solución: use Input::except(array(''page''))
LARAVEL 5
La vista debe contener algo como:
{!! $myItems->appends(Input::except(''page''))->render() !!}