![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 7.01.2011 Ostrzeżenie: (0%) ![]() ![]() |
No właśnie mam taki problem - dlaczego zmienne klasy kontrolera nie są dostępne we wszystkich akcjach?
Przykład: Controller
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ć? (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
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. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
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()).
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 7.01.2011 Ostrzeżenie: (0%) ![]() ![]() |
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.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 04:44 |