Erro url geradas por paginação codeigniter

  • Autor Autor xaiborweb
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
xaiborweb

xaiborweb

Dseda
Programador
No recomendado
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
hola para los que tienen experiencia con codeigniter.

tengo un controlador movies donde cree una serie de filtros de tal forma
HTML:
http://dominio.com/movies/category/most-views
http://dominio.com/movies/category/most-views/page/2
http://dominio.com/movies/genre/action
http://dominio.com/movies/genre/action/page/10
y todos funcionan perfectamente pero el filtro de year que su contenido es un numero referente al year al paginarlo me genera url con errores ejemplo:
HTML:
http://dominio.com/movies/year/2016
http://dominio.com/movies/year/2016/page/2
http://dominio.com/movies/year/016/page/3
.
http://dominio.com/movies/year/016/page/6
http://dominio.com/movies/year/01/page/7
otro ejemplo de este filtro year que es el único que me presenta problemas:
HTML:
http://dominio.com/movies/year/1999
http://dominio.com/movies/year/1999/page/2
... lo esta haciendo bien hasta
http://dominio.com/movies/year/1999/page/9
http://dominio.com/movies/year/1/page/10
código referente a la paginacion del controlador
PHP:
$limit = 45;
$string = $this->uri->uri_string();
$filter = $this->uri->uri_to_assoc(2);
if(empty($filter['page'])){
	$link = str_replace('/page/1','',current_url()).'/page/';
	$config['uri_segment'] = 1;
}else{
	$offset = ($filter['page']-1)*$limit;
	if ($offset == '0'){redirect(site_url(str_replace('/page/1','',$string)),'location', 301);}
	$link = site_url(str_replace($filter['page'],'',$string));
        $config['uri_segment'] = 5;
}
$peliculas = $this->movies_model->getmovies($limit,$offset,$filter,$lang);
$data['total'] = $peliculas['rows'];

$config['base_url'] = $link;
$config['use_page_numbers'] = TRUE;
$config['total_rows'] = $peliculas['rows'];
$config['per_page'] = $limit;
$config['num_links']= 3;
$config['first_url'] = '1';
$config['first_link'] = $this->lang->line('first');
$config['last_link'] = $this->lang->line('last');
$config['full_tag_open'] = '<ul class="pagination">';
$config['full_tag_close'] ='</ul>';
$config['num_tag_open'] = '<li>';
$config['num_tag_close'] = '</li>';
$config['cur_tag_open'] = '<li class="disabled"><li class="active"><a href="#">';
$config['cur_tag_close'] = '<span class="sr-only"></span></a></li>';
$config['next_tag_open'] = '<li>';
$config['next_tagl_close'] = '</li>';
$config['prev_tag_open'] = '<li>';
$config['prev_tagl_close'] = '</li>';
$config['first_tag_open'] = '<li>';
$config['first_tagl_close'] = '</li>';
$config['last_tag_open'] = '<li>';
$config['last_tagl_close'] = '</li>';
$this->pagination->initialize($config);
e buscado por todas partes y no encuentro una solución, ni siquiera en el foro de codeigniter agradezco enormemente si alguien sabe que puede estar sucediendo lo comente.
muchas gracias por leer el post 😉

- - - Actualizado - - -

encontré el error pero no lo pude solucionar
esto linea convierte las url generadas en numero y no rangos ya que por ejemplo normalmente para la pagina 2 en la url pondría 45 por ejemplo en un limite de 45
HTML:
$config['use_page_numbers'] = TRUE;
pero entonces al poner en la url 2 y no 45 al hacer la petición en ves de mostrarme en la pagina 2 los resultados desde el 45 al 90 me mostraba desde el 2 hasta el 46, entonces para solucionar esto hice esto
HTML:
$offset = ($filter['page']-1)*$limit;
y es hay donde genera una incompatibilidad con la libreria de paginacion codeigniter que hace que las urls con números al generar la paginacion me cambie la url como estaba esperimentando con el filtro por años que el año es un numero.

solución no la encontré asi que tuve que volver a la paginacion por rangos por defecto en la cual a la pagina 2 en la url pone 45 a la 3 en la url 90 y asi sucesivamente.
no es el resultado que esperaba pero almenos asi no me arroja error al generar las url con los filtros que tiene numeros.
 
Última edição:
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Voltar
Topo