[ZendFramework]Zend Framework $this-> w widoku. |
[ZendFramework]Zend Framework $this-> w widoku. |
26.08.2014, 23:38:16
Post
#1
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 26.04.2014 Ostrzeżenie: (0%) |
Pytanie do bardziej doświadczonych. Jak zaimplementować w widoku widoczność zmiennych z kontrolera. Nie chodzi mi o to jak przekazać wartość zmiennej z kontrolera do widoku, np. w Zendzie, ale jaki mechanizm to wykonuje i jak.
Interesuje mnie sam sposób w jaki jest to uzyskane. Interesuję się nieco szkieletami PHP od strony technicznej i nie bardzo wiem, jak jest ta wspaniała właściwość osiągalna. Pewne elementy niezbędne do napisania własnego MVC już opanowałem, ale powyższa sztuka, jest dla mnie niewiadomą... Proszę o wsparcie. Pozdrawiam. |
|
|
27.08.2014, 08:38:37
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) |
Nie wiem dokładnie jak to ma miejsce w przypadku zenda i zend_view, ale mniej więcej jest to podobnie zrobione we wszystkich modułach/komponentach tego typu. Tutaj masz na przykładzie templatingu z symfony: https://github.com/symfony/Templating/blob/...Engine.php#L144 po prostu przy pomocy extract z tablicy parametrów które przekazujesz, są one ekstraktowane tuż przed includowanym plikiem, dzięki czemu możesz ich użyć w szablonie.
|
|
|
27.08.2014, 09:20:49
Post
#3
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) |
Ogólnie zasada jest bardzo prosta. Tworzysz sobie klasę, w której implementujesz metody magiczne takie jak: __set, __get, __isset oraz __unset. Dodatkowo dodajesz metodę odpowiadającą za wyświetlanie, w której dołączasz plik z widokiem. Dzięki temu będziesz się mógł w nim odwoływać do zmiennych przy pomocy $this.
Cała sztuszka polega właśnie na odpowiednim zaimplementowaniu wcześniej wymienionych metod. To gdzie będziesz przetrzymywał zmienne, już zależy tylko od Ciebie. Zend na przykład zapisuje je bezpośrednio w obiekcie, z tym że nazwa zmiennej nie może mieć podkreślenia na początku (zabezpieczenie przed nadpisaniem pól obiektu):
-------------------- Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.
https://www.aroch.pl https://themeforest.net/user/aroch https://www.astroblog.aroch.pl https://www.4geeks.pl |
|
|
27.08.2014, 13:27:35
Post
#4
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 26.04.2014 Ostrzeżenie: (0%) |
Serdeczne dzięki. Spróbuję odtworzyć na małą skalę. Dziękuję i pozdrawiam.
Czyli tak. Jeżeli inkluduję w metodzie klasy plik z widokiem, to jest on niejako wewnątrz metody i siłą rzeczy pola klasy i metody mogą być w tym widoku użyte... Czyli np. tak: Plik z kontrolerem:
Plik z widokiem:
|
|
|
27.08.2014, 13:43:58
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) |
Tak, wtedy z widoku masz dostęp klasy renderującej.
|
|
|
28.08.2014, 20:39:08
Post
#6
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 26.04.2014 Ostrzeżenie: (0%) |
A jak zgodnie z MVC do kontrolera Lib_Controller podpiąć model? Czy ustanowić odrebną klasę modelu(to chyba konieczne) i wywołać ją w kontrolerze?
|
|
|
29.08.2014, 07:35:43
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) |
|
|
|
30.08.2014, 18:07:53
Post
#8
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 26.04.2014 Ostrzeżenie: (0%) |
Dzięki, Turson. Jeszcze tylko techniczne pytanie. Jak można skłonić np. NetBeans'a, aby podpowiadał w inkludowanym (w metodzie) widoku zadeklarowane pola i metody. Rozumiem, że przy implementacji metod magicznych, powiedzmy gettery i settery bądą niewidoczne, bo mogą być fizycznie nie zaimplementowane. Ale przecież pewne metody będą i pola również. Chodzi o to, aby w kodzie widoku $this-> dawała podpowiedzi. Po prostu z wygody, aby nie wędrować np. do skryptu z klasą jak się zapomni jakąś nazwę.
Ten post edytował rnest 30.08.2014, 18:09:07 |
|
|
31.08.2014, 17:35:46
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 319 Pomógł: 118 Dołączył: 26.11.2003 Skąd: Lublin Ostrzeżenie: (0%) |
Z tego co wiem, to w widokach nie ma takiej możliwości. Netbeans nie jest w stanie określić, jaka klasa korzysta z danego widoku i chyba ciężko byłoby mu dojść do tego, czym jest $this
Ale nic straconego, jeśli bardzo Ci na tym zależy, dodaj sobie w pliku widoku, na samej górze deklaracje $this i problem obejdziesz:
Problem w tym, że jest to i tak mało użyteczne, bo wszystkie zmienne i helpery są tworzone przez magiczne metody, więc nie wiem do czego Ci się to może przydać. -------------------- scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
|
|
|
Wersja Lo-Fi | Aktualny czas: 22.09.2024 - 10:07 |