Domanda

Ho un / interfaccia di pagamenti in cui l'utente dovrebbe essere in grado di filtrare tramite fascia di prezzo, banca, e altre cose. Quei filtri sono selezionati scatole standard. Quando ho presentare il modulo di filtro, tutti i dati del post reca in un altro metodo chiamato pagamenti / ricerca. Che metodo esegue la convalida, salva i valori pubblicare in una flashdata sessione e reindirizza l'utente a tornare / pagamenti passando il nome flashdata tramite URL.

Così i miei link di paginazione standard, senza filtri sono esattamente come questo:

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

E se si invia il modulo di filtro, l'URL di ritorno è:

payments/index/0/b48c7cbd5489129a337b0a24f830fd93

Questo funziona solo grande. Se cambio lo zero per qualcos'altro, impagina bene. L'unico problema però è che le << 1 2 3 4 >> collegamenti della pagina suole mantenere l'hash dopo compensato l'impaginazione. CodeIgniter sta generando i collegamenti della pagina ignorando quel segmento URI supplementari.

Il mio config uri_segment è già impostato a 3:

$config['uri_segment'] = 3;

Non riesco a impostare uri_segment a 4 perché tale hash può o non esiste. Tutte le idee su come posso risolvere questo problema? E 'obbligatorio per CI di avere l'offset come l'ultimo segmento in uri? Forse sto cercando un approccio errato, quindi sono tutto orecchi.

Grazie ragazzi.

modifica: Perché sto passando il nome flashdata tramite uri si potrebbe chiedere? perché permette all'utente di aprire diverse schede del browser e fare ricerche diverse in ogni scheda. Per ogni filtraggio si fa, una nuova var flashdata viene generato.

È stato utile?

Soluzione

Solo per gli utenti provenienti da Google, ecco la soluzione:

Nella matrice impaginazione config, ho cambiato la mia base_url per questo:

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

Dove segmento (3) è il mio numero di offset e segmento (4) è l'hash. Quindi, in questo caso, l'hash può o non può esiste e l'impaginazione continuerà a funzionare.

Un altro approccio potrebbe essere questo: Se si va ai pagamenti, e non c'è ID flashdata nell'URL, che reindirizza l'utente ai pagamenti / ricerca e crea un array vuoto con filtri vuote. Poi si reindirizza indietro ai pagamenti / _NEW_FLASHDATA_ID_HERE_. In questo modo, l'URL avrà sempre un ID flashdata nell'URL e si può avere l'impaginazione offset l'ultimo segmento URI come al solito.

Altri suggerimenti

Perché non impostare l'hash come un elemento di sessione?

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

L'hash sarà quindi disponibile fino a quando non impostato

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

O fino a quando si distrugge la sessione.

$this->session->sess_destroy();

Perché non controllo per vedere se esiste l'hash e impostare il uri_segment sulla base di tale?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top