Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Zmienne w kontrolerze dostępne we wszystkich akcjach
Forum PHP.pl > Forum > PHP > Frameworki
d_hrabia
No właśnie mam taki problem - dlaczego zmienne klasy kontrolera nie są dostępne we wszystkich akcjach?
Przykład:

Controller
  1. class JakisController extends Zend_Controller_Action
  2. {
  3. public function init()
  4. {
  5. $this->test=null;
  6. }
  7. public function pierwszaAction()
  8. {
  9. $this->test="wiadomosc";
  10. }
  11. public function drugaAction()
  12. {
  13. $this->vew->test=$this->test;
  14. }
  15. }


I przechodzac z akcji pierwsza do druga, oraz wyświetlając w widoku akcji druga zmienną $test nie wyświetla się nic.
Może mi ktoś to łopatologicznie wytłumaczyć? winksmiley.jpg
batman
1. Jesteś w akcji pierwsza. Metoda init ustawia właściwość test na null, akcja na wiadomosc.
2. Jesteś w akcji druga. Metoda init ustawia właściwość test na null, akcja pobiera właściwość z wartością null.

Jeśli byłoby tak, że akcja druga wykona się w tym samym requeście co pierwsza, wówczas właściwość zawierałaby pożądaną wartość. To są podstawy obiektówki. Zanim weźmiesz się za ZF, zacznij od nauki programowania obiektowego.
krowal
Po pierwsze to masz błąd w kodzie, jest 'vew' powinno być 'view'. A po drugie, chodzi tutaj o to, że wszystko co było w pamięci przy wywołaniu akcji 'pierwsza' zostaje wymazane od razu po wykonaniu się kodu. Język PHP nie zapamiętuje zmiennych, obiektów (i ich składowych) przechodząc pomiędzy wywołaniami strony. Aby mieć coś w zmiennej składowej test musisz wykonać metodę, która ją zmieni czyli teoretycznie w metodzie drugaAction() powinieneś wywołać pierwszaAction() i topiero odwoływać się do zmiennej test. Jakby nie było do tego powinieneś raczej użyć odrębnej metody, która ci tą zmienną zmieni a nie metody, która jest przeznaczona do wykonania całej akcji użytkownika (wszystkie metody typu xxxAction()).
d_hrabia
Dzięki, sporo mi to rozjaśniło... Bo nawet jak wyrzucałem zmienną $test poza init'a to efekt był ten sam... Dziwi mnie jedynie to, że nawet zmienne całej klasy kontrolera nie są zapamiętywane i następnie dostępne w kolejnej akcji - a szkoda.
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.