d_hrabia
9.01.2011, 13:04:03
No właśnie mam taki problem - dlaczego zmienne klasy kontrolera nie są dostępne we wszystkich akcjach?
Przykład:
Controller
class JakisController extends Zend_Controller_Action
{
public function init()
{
$this->test=null;
}
public function pierwszaAction()
{
$this->test="wiadomosc";
}
public function drugaAction()
{
$this->vew->test=$this->test;
}
}
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ć?
batman
9.01.2011, 13:12:33
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
9.01.2011, 13:14:59
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
9.01.2011, 13:52:01
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.