Skip to content

Reklamy google.

Lekcja 3 - MVC - View [widok]

Drukuj Wyślij znajomemu
Oceny: / 2
KiepskiBardzo dobry 
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:

  1. com_witaj/witaj.php
  2. com_witaj/controller.php
  3. com_witaj/views/witaj/view.html.php
  4. com_witaj/views/witaj/tmpl/default.php
 

Ogólny szablon pliku view.html.php wyglÄ…da nastÄ™pujÄ…cÄ…:

  1. <?php
  2.  
  3. defined( '_JEXEC' ) or die( 'Restricted access' );
  4.  
  5. jimport( 'joomla.application.component.view');
  6.  
  7. class WitajViewWitaj extends JView
  8. {
  9. function display($tpl = null)
  10. {
  11. parent::display($tpl);
  12. }
  13. }
  14. ?>
 

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.

  1. echo 'Napisalem to w moim widoku!';
 

Aby widok ten byÅ‚ wyÅ›wietlany domyÅ›lnie, w naszym pliku controller.php musimy dodać metodÄ™ display() która wyglÄ…da tak:

  1. function display()
  2. {
  3. parent::display();
  4. }
 

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:

  1. <?php
  2. defined ('_JEXEC') or die('Restricted access'); ?>
 

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:

  1. <?php
  2. defined( '_JEXEC' ) or die( 'Restricted access' );
  3.  
  4. jimport( 'joomla.application.component.view');
  5.  
  6. class WitajViewWitaj extends JView
  7. {
  8. function display($tpl = null)
  9. {
  10. $dane = 'Napisałem to w moim widoku!';
  11. $this->assignRef( 'mojedane', $dane );
  12. parent::display($tpl);
  13. }
  14. }
  15. ?>
 

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:

  1. <?php
  2. defined('_JEXEC') or die('Restricted access');
  3. ?>
  4. <h1><?php echo $this->mojedane; ?></h1>
 

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:

  1. JRequest::setVar('view', 'nazwa_widoku');
  2. JRequest::setVar('layout','nazwa_szablonu');
 
 

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Å‚ »