Filtro com paginação - Laravel

1 resposta
laravelphp
A

Boa noite,

O filtro em si aparece certo, mas ao ir para outra página (pela paginação), perde esse filtro.

Não consigo encontrar o problema, alguém pode me ajudar?

Minha rota:

Route::any('/recentes-pesquisa','ActionsRecentsController@recentes')->name('recentes.pesquisa');

Controller

$dataForm = $request->except('_token');           
if (isset($dataForm['num'])){
        $buscaNotas = DB::table('notas')->join('status_notas', 'notas.cd_nota', '=', 'status_notas.cd_nota')->join('prestador','notas.cd_prestador','=','prestador.cd_prestador')->join('competencia','notas.comp_nota','=','competencia.cd_competencia')->select('notas.*', 'status_notas.*','prestador.*','competencia.*')
    ->where('notas.nro_nota', '=', $dataForm['num'])->paginate(10); 
    }
    elseif((isset($dataForm['num'])and ($dataForm['prestador']))){
     $buscaNotas = DB::table('notas')->join('status_notas', 'notas.cd_nota', '=', 'status_notas.cd_nota')->join('prestador','notas.cd_prestador','=','prestador.cd_prestador')->join('competencia','notas.comp_nota','=','competencia.cd_competencia')->select('notas.*', 'status_notas.*','prestador.*','competencia.*')
    ->where('notas.nro_nota', '=', $dataForm['num']) 
    ->where('prestador.nm_prestador','like UPPER',$dataForm['prestador'])->paginate(10);     
    }elseif(isset($dataForm['data_emissao'])){
     $buscaNotas = DB::table('notas')->join('status_notas', 'notas.cd_nota', '=', 'status_notas.cd_nota')->join('prestador','notas.cd_prestador','=','prestador.cd_prestador')->join('competencia','notas.comp_nota','=','competencia.cd_competencia')->select('notas.*', 'status_notas.*','prestador.*','competencia.*')   
    ->whereBetween('notas.dt_emissao_nota',[$dataForm['data_emissao'],$dataForm['data_emissao']])->paginate(10);    
    }


 else{    //se n selecionou nenhum filtro... 
 $buscaNotas = DB::table('notas')
    ->join('status_notas', 'notas.cd_nota', '=', 'status_notas.cd_nota')
    ->join('prestador','notas.cd_prestador','=','prestador.cd_prestador')
    ->join('competencia','notas.comp_nota','=','competencia.cd_competencia')
    ->select('notas.*', 'status_notas.*','prestador.*','competencia.*')
    ->where('notas.comp_nota', '=', 1)
    ->paginate(10);
 }

  return view('\recent')->with('notas_recentes', $buscaNotas)
                        ->with('dataForm',$dataForm);

View:

{{ $notas_recentes->appends(['dataForm' => $dataForm])->links() }}

A URL fica assim: http://127.0.0.1:8000/recentes-pesquisa?_token=I0BG4fXmLi10U2bfUM6zztwvbUI3oobHOAFYKUtQ&num=&data_emissao=2018-08-12&comp=&prestador=&status=

Ao clicar na segunda pagina, ele fica assim: http://127.0.0.1:8000/recentes-pesquisa?dataForm[data_emissao]=2018-08-12&page=2

1 Resposta

N

{{ $notas_recentes->appends([‘dataForm’ => $dataForm])->links() }}

na sua view você tem que passar todos os parâmetros que o filtro busca exemplo que ocorreu no meu caso.

{{ $series->appends([‘ano’ => $ano, ‘cre’ => $cre_id, ‘municipio’ => $municipio_id])->links() }}

assim ele vai continuar com os filtros ativos mesmo mudando de pagina.

Criado 23 de agosto de 2018
Ultima resposta 18 de dez. de 2018
Respostas 1
Participantes 2