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


Personal Tools