Pregunta

Tengo una interfaz / pagos en los que el usuario debe ser capaz de filtrar a través de rango de precios, el banco, y otras cosas. Esos filtros son cajas de selección estándar. Cuando envíe el formulario de filtro, todos los datos de la entrada va a otro método llamado pagos / búsqueda. Que realiza el método de la validación, guarda los valores de correos en una flashdata sesión y vuelve a dirigir a la parte posterior de usuario / pagos pasando el nombre flashdata a través de URL.

Así que mis enlaces de paginación estándar sin filtros son exactamente así:

payments/index/20/
payments/index/40/
payments/index/60/

Y si envía el formulario de filtro, la URL de retorno es:

payments/index/0/b48c7cbd5489129a337b0a24f830fd93

Esto funciona muy bien. Si cambio el cero para otra cosa, la pagina muy bien. El único problema sin embargo es que los << 1 2 3 4 >> página enlaza planteo mantienen el hash después de la paginación compensado. CodeIgniter está generando los enlaces de la página haciendo caso omiso de ese segmento uri adicional.

Mi config uri_segment ya está establecido a 3:

$config['uri_segment'] = 3;

No se puede establecer uri_segment a 4, porque puede ser o no existe ese hash. ¿Alguna idea de cómo puedo solucionar esto? ¿Es obligatorio para los CI para que el desplazamiento como el último segmento de la URI? Tal vez estoy tratando un enfoque incorrecto, así que soy todo oídos.

Gracias gente.

editar: ¿Por qué estoy pasando el nombre flashdata a través de URI que se puede pedir? ya que permite al usuario abrir varias pestañas del navegador y hacer diferentes búsquedas en cada pestaña. Para cada filtrando lo hace, se genera una nueva var flashdata.

¿Fue útil?

Solución

Solo para usuarios procedentes de Google, aquí está la solución:

En la matriz de configuración de paginación, he cambiado de base_url para esto:

$config['base_url'] = site_url('payments/index/' . $this->uri->segment(3) . '/' . $this->uri->segment(4));

Donde segmento (3) es mi número de desplazamiento y el segmento (4) es el hash. Por lo tanto, en este caso, el hash puede o no existe y la paginación seguirá funcionando.

Otro enfoque podría ser la siguiente: Si usted va a los pagos, y no hay ningún ID flashdata en la URL, se redirige al usuario a pagos / búsqueda y crear una matriz vacía con filtros vacías. Luego se vuelve a dirigir de nuevo a los pagos / _NEW_FLASHDATA_ID_HERE_. De esta manera, la URL siempre tendrá un ID flashdata en el URL y se puede tener la paginación desplazamiento en el último segmento URI como de costumbre.

Otros consejos

¿Por qué no establecer el hash como un elemento de sesión?

$this->session->set_userdata('session_flashdata_hash', $hash);

El hash a continuación, estará disponible hasta que desasignarla

$this->session->unset_userdata('session_flashdata_hash');

O hasta que destruya la sesión.

$this->session->sess_destroy();

¿Por qué no estás mirando para ver si existe el hash y establecer el uri_segment basado en eso?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top