Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF] Obsługa sesji
zeta758
post
Post #1





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 18.06.2006

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
wolditm
post
Post #2





Grupa: Zarejestrowani
Postów: 31
Pomógł: 2
Dołączył: 20.07.2005

Ostrzeżenie: (0%)
-----


A nie lepiej, użyć gotowca czyli ActionHelper dla kontrollera - patrz manual FlashMessenger smile.gif


--------------------
Wspomnienia
Go to the top of the page
+Quote Post
zeta758
post
Post #3





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 18.06.2006

Ostrzeżenie: (0%)
-----


poczytam o action helper, dzieki.

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

thx
Go to the top of the page
+Quote Post
wolditm
post
Post #4





Grupa: Zarejestrowani
Postów: 31
Pomógł: 2
Dołączył: 20.07.2005

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował wolditm 13.07.2007, 10:22:52


--------------------
Wspomnienia
Go to the top of the page
+Quote Post
zeta758
post
Post #5





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 18.06.2006

Ostrzeżenie: (0%)
-----


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?

Ten post edytował zeta758 13.07.2007, 13:35:24
Go to the top of the page
+Quote Post
dEF
post
Post #6





Grupa: Zarejestrowani
Postów: 15
Pomógł: 1
Dołączył: 31.03.2006

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 19:50