Artykuły
Kurs pisania komponentów dla Joomla 1.5 [MVC]
Lekcja 3 - MVC - View [widok]
Lekcja 3 - MVC - View [widok] |
|
|
| Redaktor: Administrator | |
| 01.05.2008. | |
|
DziÅ› zajmiemy siÄ™ kolejnÄ… warstwÄ… wzorca MVC jakÄ… jest View czyli widok. Warstwa ta jest odpowiedzialna za prezentacjÄ™ danych. Pierwsze zagadnienie jakie postaram siÄ™ omówić to organizacja plików. Do tej pory w katalogu naszego komponentu (strona admina czy fronotowa) mamy dwa pliki: witaj.php oraz controller.php. Wszystkie pliki widoku przechowywane bÄ™dÄ… w katalogu views który bÄ™dzie znajdowaÅ‚ siÄ™ w katalogu gÅ‚ównym naszego komponentu. Zatem, utwórz katalog views (wewnÄ…trz katalogu komponentu np com_witaj). NastÄ™pnie wewnÄ…trz katalogu tworzymy kolejne katalogi z dowolnymi nazwami naszych widoków(stosuje siÄ™ kilka różnych wedle potrzeby do prezentacji innych danych itp.). Aby utworzyć widok domyÅ›lny należy użyć w nazwie katalogu nazwy naszego komponentu czyli jeÅ›li nasz komponent nazywa siÄ™ witaj (com_witaj) to nasz katalog widoku domyÅ›lnego bÄ™dzie nazywaÅ‚ siÄ™ witaj.(żeby siÄ™ nie pogubić, Å›cieżka do tego katalogu wyglÄ…da tak: joomla/components/com_witaj/views/witaj/ dla strony frontowej lub joomla/administrator/components/com_witaj/views/witaj dla strony admina, gdzie joomla to nasz katalog gÅ‚ówny w którym mamy zainstalowanÄ… Joomla). W katalogu tym umieÅ›cimy plik view.html.php który bÄ™dzie pobieraÅ‚ dane z modelu (o nim napiszemy później) i "wpychaÅ‚" je do szablonów naszego widoku.
Teraz tworzymy katalog w którym umieÅ›cimy szablony dla danego modelu. Katalog ten nazwiemy tmpl (skrót od templates). W katalogu tmpl możesz utworzyć jeszcze domyÅ›lny szablon o nazwie default.php (kodem zajmiemy siÄ™ później). JeÅ›li masz już utworzone katalogi i pliki o których pisaÅ‚em wczeÅ›niej możemy zacząć pisać kod. Mój tekst może być miejscami trochÄ™ "zamotany" dlatego poniżej jeszcze wylistowana lista plików naszego komponentu:
Ogólny szablon pliku view.html.php wyglÄ…da nastÄ™pujÄ…cÄ…:
Pierwsze dwie linie tÅ‚umaczone byÅ‚y w poprzednim artykule, z tym wyjÄ…tkiem że linia dwa teraz odpowiedzialna jest za zaÅ‚adowanie biblioteki view. Każdy plik view.html.php skÅ‚ada siÄ™ z jednej gÅ‚ównej klasy któej nazwa jest zbudowana z nazwy komponentu sÅ‚owa View orazn nazwy widoku. W naszym przypadku jest to WitajViewWitaj. WewnÄ…trz klasy mamy funkcjÄ™ display której bÄ™dziemy używać do przekazywania danych do szablonu. OczywiÅ›cie w miarÄ™ potrzeby i wzrostu umiejÄ™tnoÅ›ci można dopisać inne funkcje. Teraz wewnÄ…trz funkcji display proponujÄ™ wpisać jakiÅ› kod php np.
Aby widok ten byÅ‚ wyÅ›wietlany domyÅ›lnie, w naszym pliku controller.php musimy dodać metodÄ™ display() która wyglÄ…da tak:
Co ona wykonuje? WywoÅ‚uje funkcjÄ™ display która jest zadeklarowana w bibliotece kontrolera. MajÄ…c takÄ… funkcjÄ™ w kontrolerze, możemy testować czy dziaÅ‚a nasz widok. Wrzucamy wszystkie pliki na serwer i wpisujemy w przeglÄ…darke adres do naszej jooml'i dodajÄ…c: index.php?option=com_witaj jeÅ›li wszystko zrobiÅ‚eÅ› dobrze to powinieneÅ› zobaczyć napis "Napisalem to w moim widoku!". JeÅ›li wszystko dobrze dziaÅ‚a, możemy zabrać siÄ™ za szablon. Edytujemy plik default.php w katalogu tmpl naszego widoku i tutaj możesz wpisać co Ci siÄ™ podoba(kod php). Zasada jest taka że w pliku szablonu używamy jak najmniej kodu php. OczywiÅ›cie zacząć musiymy od: Co dalej? Możesz np. coÅ› wypisać, ja to zrobiÅ‚em np. tak przed znakami ?> dopisz echo 'NapisaÅ‚em to w moim szablonie!'; po zapisaniu plików znów możesz sprawdzić dziaÅ‚anie komponentu, najpierw powinieneÅ› zobaczyć tekst Napisalem to w moim widoku! a pod nim NapisaÅ‚em to w moim szablonie!. No dobrze ale co to nam daje? No narazie nic... To wypisywanie tekstów zaprezentowaÅ‚em w celu zobrazowania Ci w jaki sposób dziaÅ‚a widok i szablon. Tak naprawdÄ™ pliku view.html.php nie używa siÄ™ do wyÅ›wietlania danych, jest on tylko poÅ›rednikiem miÄ™dzy źródÅ‚em danych a szablonem. Na temat źródÅ‚a danych bÄ™dzie w nastÄ™pnym artykule. Teraz w celu zaprezentowania przekazywania danych do szablonu w widoku utworzymy jakÄ…Å› zmiennÄ…. Np. $dane której przypiszemy nasz tekst. Do przekazania tej zmiennej do szablonu używamy funkcji z klasy JView assignRef( 'nazwa', wartosc ); Pierwszy parametr to nazwa pod jakÄ… bÄ™dzie dostÄ™pna zmienna w pliku szablonu, drugi to jej wartość. Zmienne nie sÄ… dosÅ‚ownie przekazywane do szablonu, przekazywane sa tylko referencje do nich (oszczÄ™dza to pamięć) po wiÄ™cej informacji odsyÅ‚am tutaj . Nasz widok, teraz może wyglÄ…dać tak: Aby teraz użyć zmiennÄ… w szablonie odwoÅ‚ujemy siÄ™ zawsze poprzez $this->nazwa_Zmiennej (taka jakÄ… użyliÅ›my przy przekazywaniu). WiÄ™c teraz nasz plik szablonu (default.php) może wyglÄ…dać nastÄ™pujÄ…co: Teraz proponujÄ™ pobawić siÄ™ trochÄ™ tym aby zrozumiec jak to dziaÅ‚a. Jeszcze jedna wskazówka do ćwiczeÅ„. Aby z kontrolera wywoÅ‚ać inny widok lub szablon z danego widoku nalezy użyć odpowiednio:
Z tym że jeÅ›li chcemy wybrać widok z szablonem domyÅ›lnym to używamy tylko pierwszy wiersz, jesli jednak chcemy wybrać inny szablon to musimy wpisać oba wiersze. Co one oznaczajÄ…? Nie jest to nic innego jak tylko ustawienie wartoÅ›ci zmiennych. Na zadanie domowe stwórz kilka różnych widoków a w nich szablonów. Oraz kilka metodÄ… odpowiedzialnych za różne task'i (zadania - opisaÅ‚em to w lekcji 2) tak aby wywoÅ‚ujÄ…c różne zadania wyÅ›wietlane byÅ‚y inne widoki. MyÅ›lÄ™ że poradzisz sobie z tym bez problemu! JeÅ›li uważasz, że z tych artykuÅ‚ów da siÄ™ czegoÅ› nauczyć gÅ‚osuj w sondzie, widzÄ…c statystyki czytalnoÅ›ci wiem że temat jest chÄ™tnie czytany, ale nie wiem z jakim skutkiem. JeÅ›li masz jakieÅ› sugestie to zapraszam do kontaktu;) W krótce może jeÅ›li bÄ™dÄ™ miaÅ‚ czas to wymyslÄ™ jakiÅ› sposób interakcji z osobami czytajÄ…cymi artykuÅ‚.
|
|
| Zmieniony ( 01.05.2008. ) |
| nastÄ™pny artykuÅ‚ » |
|---|



TOOLS :

