
xaiborweb
Programador
No recomendado
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
hola para los que tienen experiencia con codeigniter.
tengo un controlador movies donde cree una serie de filtros de tal forma
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:
otro ejemplo de este filtro year que es el único que me presenta problemas:
código referente a la paginacion del controlador
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
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
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.
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
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
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
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);
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;
HTML:
$offset = ($filter['page']-1)*$limit;
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 edición: