![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 426 Pomógł: 1 Dołączył: 2.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Zastanawiałem się ostatnio nad implemenacją widoku w moim frameworku. Dotychczas nie tworzyłem osobnych klas dla widoku tylko robiłem tak jak jest w ZF:
Ale zauważyłem że dużo osób tworzy osobne klasy dla widoku np:
Czy moglibyście wyjaśnić jakieś plusy trzymania widoków w osobnych klasach :?: (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 359 Pomógł: 1 Dołączył: 16.04.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Wiesz, jezlei chodzi o widok, to wzorowanie na Zend'zie nie jest dobre, bo chlopaki chyba zapomnieli o czyms takim (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Trzymanie widoku w odzielnych klasach jest tym plusem, ze mozesz sobie wymienic w kazdej chwili wyswietlanie ( a to html, a to pdf, a tugież plik tekstowy w postaci bazy czy czegos). Pozdrawiam, Kamil |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 426 Pomógł: 1 Dołączył: 2.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
A mógłbyś pokazać jakiś przeykład takowej klasy, powiedzmy standardowa (html). Bo ja to rozumuje tak:
Akcja:
No i jak ma wyglądać przykładowa klasa News_View i co ma w sobie zawierać.
Takie coś stworzyłem ale nie wiem czy dobrze to zrozumiałem :| |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 359 Pomógł: 1 Dołączył: 16.04.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Potrzebujessz na pdf dziedziczysz po PDFView aha parent::__construct():
Dorzuce kontroler jesli chcesz (takie nei wiadomo co):
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
A mógłbyś pokazać jakiś przeykład takowej klasy, powiedzmy standardowa (html). Bo ja to rozumuje tak: Dobrze to rozumiesz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Envp zaprezentowal widok, gdzie trzeba wywolac konstruktor rodzica. Nie wiem co on tam ma, bo moze jest mu to potrzebne. Da sie to zrobic bez wywolywania konstruktora (zawsze mniej pisania). Polecam zajrzec do Rapide Framework: http://rapide.adrian.livenet.pl/ Adrian. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 367 Pomógł: 10 Dołączył: 20.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Początkowo miałem problem z oddzieleniem kodu od generowania widoku a jego parsowania do template.
Ostatecznie zrobiłem klasę tworzącą drzewko danych, klasę tę wykorzystuje moduł do przechwytywania danych pobranych np. z SQL, następnie na samym końcu po dispatcherze i routerze urchamiany jest widok, który dostaje polaczona tablice danych (drzewko) ktora zawiera w sobie m.in. plik tpl na ktorym bedzie operowac. Widok sklada tablice i wyswietla widok (daje to mozliwosc zmiany formatu wyswietlenia z HTML na PDF czy inne edytujac tylko klase widoku a nie kazdy modul). I wszystko sprawuje sie dobrze. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 800 Pomógł: 0 Dołączył: 26.11.2005 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Posłużyłem się waszymi radami i teraz pojawiły się kochane schody. Otóż jest taki problem. Jak skonstruować te klasy konkretnego widoku i jak ogólnie klasę np. HTML_View ?
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 367 Pomógł: 10 Dołączył: 20.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
U mnie wyglada to tak:
Ze mam tablice z zaglebieniami: Kod [0] => [file] = plik.tpl [setvar] = string; [setvar] = string2; [setvar] = string3; [setvar][] => [file] = plik2.tpl [setvar] = string4; [setvar] = string5; [setvar] = string6; itd.. Potem robie funkcje Generate_VIEW_HTML polega ona na tym ze foreach dostaje te tablice i leci po elementach jesli w setvar napotka tablice (ktora jest kolejnym szablonem nie tablica ze zwyklymi stringami) zwraca widok tej samej funkcji:
Ja to na takiej zasadzie to robie. Oczywiscie to tylko schemat w praktyce taka klasa zawiera duzo funkcji np zintegrowany cache itd.... oraz opcje w zaleznosci pod jaki system template to robimy. Ja napisalem sobie wlasny. Daje to nam duzo mozliwosci, bo mozemy robic cache template w jednym miejscu lub inne potrzebne operacje. Ten post edytował eai 20.10.2006, 15:40:06 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 800 Pomógł: 0 Dołączył: 26.11.2005 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Hmm... Nie wiele mi to pomogło...
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 367 Pomógł: 10 Dołączył: 20.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Teoretycznie w MVC modele przekazuja nam dane, wiec je jakos musimy przekazac np za pomoca tablicy. Drugi Model moze zawierac w tablicy dane z kolejnego modelu. Te tablice odpowiednia lacza sie w galeziach. Po przejsciu przez wszystkie akcje uzytkownika powstaje dosc spora tablica. A widok ma za zadanie przetworzenie tej calej tablicy.
Dlatego u mnie taka struktua:
No i tak dalej.... w dispatcherze lacze te tablice lub bezposrednio w modelu jesli model korzysta z innego modelu.... Tak to u mnie w praktyce wyglada "Oddzielenie Modelu od Widoku" Ten post edytował eai 20.10.2006, 16:07:11 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 19:54 |