Dlhšie mi trvalo, kým som v CodeIgniteri pochopil, aký je rozdiel medzi použitím redirect() a $this->load->view(), preto som sa rozhodol, podeliť sa s tým. Veď načo objavovať teplú vodu? 😉
Otázky, ktoré som mal:
- Prečo nevidím moje dáta vo view? Resp. prečo sa nezobrazia údaje, ktoré som nastavil?
- Prečo sa raz používa redirect a inokedy load view? Kedy ktoré použiť?
Základné pravidlo = zmena kontextu:
- pri zmene odporúčam redirect (napr. prechod na novú položku menu, či v poli dát)
- ak nie je zmena, vtedy použite load->view (napr. re-submit formulára po chybe vstupných dát)
Ako na odovzdanie údajov:
Pri redirect-e máte v zásade 2 možnosti:
- použiť URL parametre
redirect('client/get_client/' . $client->family_id . '/' . $client_id); |
- použiť set_flashdata
$this->session->set_flashdata('message', $this->auth->messages()); redirect(base_url(), 'refresh'); |
Upozornenie: Metóda set_flashdata slúži na odovzdanie informácie do nasledujúceho kontextu t.j. nie do aktuálneho, preto NIE JE možné dostať sa k jej aktuálnemu obsahu BEZ zmeny URL, resp. refresh-nutia tej existujúcej.
Pri load view máte v zásade 1 možnosť:
- použiť klasické odovzdanie údajov cez parameter
$this->load->view($view, $data); |
Upozornenie: Ak chcete použiť zreťazenie views, t.j. v jednom view robíte load ďalšieho (napr. header), majte na pamäti, že pole $data bude v prvom view už rozložené na jednotlivé položky. Preto NIE JE možné odovzdať ho ($data) priamo do ďalšieho view.
To je všetko 😉
Najnovšie komentáre