Frage

Ich habe eine / Zahlungsschnittstelle, wo der Benutzer sollte über Preisklasse, Bank und andere Sachen Filter in der Lage sein. Diese Filter sind Standardauswahlbox. Wenn ich den Filter Formular abgesendet haben, alle die Post-Daten an eine andere Methode geht Zahlungen genannt / suchen. Diese Methode führt die Validierung, speichert die Post-Werte in einer Sitzung flashdata und Umleitungen an / Zahlungen den Benutzer zurück, um den flashdata Namen via URL übergeben.

Also meine Standard Paginierung Links ohne Filter sind genau wie folgt aus:

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

Und wenn Sie den Filter Formular abgesendet haben, die Rückkehr URL lautet:

payments/index/0/b48c7cbd5489129a337b0a24f830fd93

Das funktioniert einfach toll. Wenn ich die Null für etwas anderes zu ändern, paginiert es einfach gut. Das einzige Problem ist jedoch, dass die << 1 2 3 4 >> Seite Links würden nicht den Hash halten, nachdem die Paginierung versetzt. CodeIgniter ist die Seite Links zu erzeugen, dass die zusätzliche uri Segment ignoriert.

Meine uri_segment Config ist bereits auf 3:

$config['uri_segment'] = 3;

Ich kann uri_segment bis 4 nicht gesetzt, weil der Hash-Wert kann oder auch nicht vorhanden. Irgendwelche Ideen, wie kann ich dieses Problem lösen? Ist es zwingend notwendig, für CI des Offset als das letzte Segment in der uri zu haben? Ich versuche, einen falschen Ansatz Vielleicht, so dass ich alle Ohren bin.

Danke Leute.

edit: Warum bin ich vorbei den flashdata Namen über uri könnte man fragen? denn es erlaubt dem Benutzer, mehrere Browser-Tabs zu öffnen und in den einzelnen Registerkarten verschiedenen Recherchen zu tun. Für jede Filterung Sie tun, wird eine neue flashdata var erzeugt.

War es hilfreich?

Lösung

Nur für Nutzer von Google kommen, hier ist die Lösung:

In der Paginierung Config-Array, änderte ich meine base_url für diese:

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

Wo Segment (3) ist meine Korrekturnummer und Segment (4) Der Hash wird. Also, in diesem Fall kann die Hash-oder auch nicht vorhanden ist und die Paginierung wird immer noch funktionieren.

Ein weiterer Ansatz, um dies sein könnte: Wenn Sie auf Zahlungen gehen, und es gibt keine flashdata ID in der URL, sie leitet den Benutzer auf Zahlungen / Suche und erstellen Sie ein leeres Array mit leeren Filter. Dann leitet es zurück zu Zahlungen / _NEW_FLASHDATA_ID_HERE_. Auf diese Weise wird die URL immer eine flashdata ID in der URL hat und Sie die Paginierung im letzten URI Segment wie gewohnt versetzt haben können.

Andere Tipps

Warum nicht setzen Sie den Hash als Session-Element?

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

Der Hash wird dann zur Verfügung stehen, bis Sie es unset

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

oder bis Sie zerstören die Sitzung.

$this->session->sess_destroy();

Warum sind Sie nicht zu prüfen, ob sich der Hash vorhanden ist und stellen Sie den uri_segment basierend auf das?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top