Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Obsługa sesji
Forum PHP.pl > Forum > PHP > Frameworki
zeta758
Witam,
Mam taki problem. Napisalem w index.php (bootstrap) taka linijkę, która miała odpowiadać za sesję:
  1. <?php
  2. Zend_Session::start();
  3. $this->komunikat = new Zend_Session_Namespace('komunikat');
  4. ?>

i chciałem żeby ustawienie zmiennej sesyjnej w jednym kontrolerze:
  1. <?php
  2. $komunikat->info = "Rekord zostal zaktualizowany";
  3. ?>

bylo zapisywane w sesji i w innym kontrolerze lub akcji bylo pokazywane:
  1. <?php
  2. $this->view->komunikaty = $komunikat->info;
  3. ?>


Niestety nic nie zapisuje i nie wiel w czym problem,
prosze o pomoc.
No i nie chcialbym zeby przed kazda akcja w kontrolerze pisac
  1. <?php
  2. $this->komunikat = new Zend_Session_Namespace('komunikat');
  3. ?>
wolditm
A nie lepiej, użyć gotowca czyli ActionHelper dla kontrollera - patrz manual FlashMessenger smile.gif
zeta758
poczytam o action helper, dzieki.

ALe sesja bedzie potrzeba do innych rzeczy, wiec moze cos w oparicu o sesje ktos pomoze?

thx
wolditm
FlashMessenger jest przecież oparte o Zend_Session winksmiley.jpg
A jak chcesz 'tradycyjnie' no to trzeba w każdym kontrolerze:
  1. <?php
  2. $this->komunikaty = new Zend_Session_Namespace('komunikaty');
  3. ?>


no chyba, że zrobisz tak

  1. <?php
  2. Zend_Session::start();
  3. $session = new Zend_Session_Namespace(); // default namespace
  4. $frontController->setParam( 'session', $session );
  5. // i potem w kontrollerach
  6. $this->session = $this->_getParam( 'session' );
  7. ?>
zeta758
dzieki,
ale cos nie do końca działa:

mam w index.php
  1. <?php
  2. Zend_Session::start();
  3. $session = new Zend_Session_Namespace();
  4. ?>


w pliku productController mam dwie akcje:
indexAction();
newAction();

w indexAction mam:
  1. <?php
  2. $this->session = $this->_getParam('session');
  3. $this->session->filtr = "To jest filtr w sesji";
  4. ?>


w newAction mam:
  1. <?php
  2. $this->session = $this->_getParam('session');
  3. echo $this->session->filtr;
  4. ?>


No i zakładam że jak jestem w akcji index to nic ma sie nie pojawić natomiast jak przejde na akcje new to powinien sie pojawić napis "To jest filtr w sesji".

Co jest nie tak?
dEF
Za twoim przykladem, czyli indexAction() -> zapis do sesji, newAction() -> odczyt z sesji

W index.php wystarczy, ze zaladujesz tylko klase sesji.
  1. <?php
  2. Zend_Loader::loadClass('Zend_Session');
  3. ?>


indexAction()
  1. <?php
  2. $session_namespace = new Zend_Session_Namespace('namespace');
  3. $session_namespace->session_id = time();
  4. ?>


newAction()
  1. <?php
  2. $session_namespace = new Zend_Session_Namespace('namespace');
  3. echo $session_namespace->session_id;
  4. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.