Trace: » session
Table of Contents
Sesje w cakephp
Sesje w cakephp obslugujemy za pomoca obiektu Session.
zapisywanie do sesji
$people['id1']['name']="slawek";
$people['id1']['surnname']="wilusz";
$people['id2']['name']="jan";
$people['id2']['surnname']="kowalski";
$this->Session->write('people',$people);
odczytywanie z sesji
// cala tablica
$people = $this->Session->read('people');
// tablica z osoba pierwsza
$people1 = $this->Session->read('people.id1');
//imie pierwszej osoby
$name_people1 = $this->Session->read('people.id1.name');
setFlash() i flash()
Funckja setFlash() sluzy do ustawienia komunikatu w controlerze ktory pojawi sie w VIEW.
Najprostsze jej wywołanie to:
$this->Session->setFlash("Komunikat");
a nastepnie w VIEW dodanie:
<?php
if($session->check('Message.flash')):
$session->flash();
endif;
?>
Jesli zostal ustawiony jakis komunikat wygeneruje to:
<div id="flashMessage" class="message">Komunikat</div>
Bardzo czesto jednak potrzebuje zroznicowac wyglada komunikatu zaleznie od tego czy dana akacja sie powiodla czy nie. Umozliwia to funckja setFlash() ktora posiada nastepujace paramtry:
* @param string $message Message to be flashed * @param string $layout Layout to wrap flash message in * @param array $params Parameters to be sent to layout as view variables * @param string $key Message key, default is 'flash' function setFlash($message, $layout = 'default', $params = array(), $key = 'flash')
Jesli wprowadzimy drugi parametr layout zamiast defaultwego diva cake pobierze pliki $layout.ctp z katalogu layout.
Przykladowo w kontrolerze wpisujemy:
$this->Session->setFlash("Komunikat",'error_msg');
a nastepnie tworzymy plik error_msg.ctp w /app/views/layouts/error_msg.ctp
<div id="flashMessage" class="flashMessageError">
<?php echo ($session->read('Message.flash.message')) ?>
</div>
TODO - opisac params i key