Laravel 6 - 23 Corrección de error en el buscador.

Laravel Logo

Hola y bienvenidos.

Actualmente estamos presentando una eventualidad, ya que si realizamos un filtro, y trae muchos resultados, tanto que se ejecuta el paginador, observaremos que el filtro en la URL se pierde.

En este sentido vamos a mostrar diferentes formas de solucionar este inconveniente:

Vamos a hacer en el controlador llamado AgendaController en el método index:

    public function index(Request $request)
    {

        $buscar = $request->get('buscarpor');

        $tipo = $request->get('tipo');

        $variablesurl=$request->all();

        $Agenda = Agenda::buscarpor($tipo, $buscar)->paginate(5)->appends($variablesurl);

        return view('agenda.index', compact('Agenda'));
    }

Como podemos observar creamos una nueva variable llamada $variablesurl que va a ser igual a todas las variables que están en el request. 

y solo basta con agregar despues del paginate(5) el método appends y pasarle por parámetro esta variable. 

Otras formas de realizar lo mismo es sustituyendo la línea 

$variablesurl=$request->all();

por una de estas posibles opciones:

 

//forma 1
$variablesurl=$request->input();

//forma 2
$variablesurl=$request->query();

//forma 3
$variablesurl=$request->except(['page']);

//forma 4
$variablesurl=$_GET;

//forma 5
$variablesurl= [
  'tipo' => $tipo,
  'buscarpor' => $buscar
];

si no queremos usar estas opciones en el controlador y lo queremos hacer en la vista, podemos poner el método index del controlador de la siguiente manera:

 

public function index(Request $request)
    {

        $buscar = $request->get('buscarpor');

        $tipo = $request->get('tipo');

        //$variablesurl=$request->all();

        //$variablesurl=$request->input();

        //$variablesurl=$request->query();

        //$variablesurl=$request->except(['page']);

        //$variablesurl=$_GET;

        /*$variablesurl= [
            'tipo' => $tipo,
            'buscarpor' => $buscar
        ];*/

        //dd($variablesurl);

        /*$Agenda = Agenda::buscarpor($tipo, $buscar)->paginate(5)->appends($variablesurl);
*/

        $Agenda = Agenda::buscarpor($tipo, $buscar)->paginate(5);
        
        return view('agenda.index', compact('Agenda'));
    }

e ir a la vista index.blade.php

y cambiar la línea 

{{ $Agenda->links() }}

por una de estas opciones:

{{-- Forma 1 --}}
{{ $Agenda->appends(Request::only(['tipo','buscarpor']))->links() }}

{{-- Forma 2 --}}
{!! $Agenda->appends(Request::only(['tipo','buscarpor']))->links() !!}

{{-- Forma 3 --}}
{{ $Agenda->appends($_GET)->links() }}

Espero que les haya servidor, así que sin masssss, nos veremos en la próxima. 

Etiquetas
Video

Comparte este artículo