Skip to content

Reklamy google.

Start arrow Artykuły arrow Kurs pisania komponentów dla Joomla 1.5 [MVC] arrow Lekcja 4 – MVC – Model [model]

Lekcja 4 – MVC – Model [model]

Drukuj Wyślij znajomemu
Oceny: / 6
KiepskiBardzo dobry 
Redaktor: Administrator   
15.05.2008.

W dzisiejszym artykule postaram siÄ™ dość zwięźle i szybko przedstawić Wam kolejnÄ… warstwÄ™ wzorca projektowego jakim jest MVC. OczywiÅ›cie warstwa ta bÄ™dzie przedstawiona na przykÅ‚adzie z poprzednich lekcji tzn. komponentu dla Joomla 1.5 Model bÄ™dzie odrÄ™bnym plikiem php przechowywanym w katalogu models w gÅ‚ównym katalogu komponentu. Nazwa pliku php bÄ™dzie dowolna z tÄ… jednak zasadÄ… jak w przypadku widoków, że jeÅ›li chcemy utworzyć jakiÅ› model domyÅ›lny dla widoku nazywamy go tak samo jak nasz widok.

Ogólny szablon modelu bÄ™dzie wyglÄ…daÅ‚ nastÄ™pujÄ…co:

 

  1. <?php
  2. defined('_JEXEC') or die();
  3.  
  4. jimport( 'joomla.application.component.model' );
  5.  
  6. class NazwaKomponentuModelNazwaModelu extends JModel
  7. {
  8. function JakasFunkcja()
  9. {
  10. return jakaÅ› wartosc;
  11. }
  12. }
  13. ?>
 
 

Jak na pewno zauważyliÅ›cie ciaÅ‚o modelu nie różni siÄ™ zbytnio od widoku. Jedyna różnica to Å‚adowana biblioteka joomla.application.component.model oraz nazwa klasy, która skÅ‚ada siÄ™ z NazwyKomponentu – chyba nie muszÄ™ komentować, w naszym przypadku z poprzednich lekcji bÄ™dzie to Witaj. NastÄ™pnie sÅ‚owo kluczowe (w rozumieniu pisania komponentów dla Joomla) Model, po którym wpisujemy nazwÄ™ Modelu (taka sama jak nazwa pliku bez php). W takim razie źródÅ‚o naszego przykÅ‚adowego modelu bÄ™dzie wyglÄ…dać tak:

  1. <?php
  2. defined('_JEXEC') or die();
  3.  
  4. jimport( 'joomla.application.component.model' );
  5.  
  6. class WitajModelWitaj extends JModel
  7. {
  8. function pobierzDane()
  9. {
  10. $dane = "Jakis przykładowy tekst!";
  11. return $dane;
  12. }
  13. }
  14. ?>
 
 

 

W module tym zaimplementowaÅ‚em prostÄ… funkcjÄ™ która zwraca napis ze zmiennej $dane. OczywiÅ›cie funkcji może być wiÄ™cej i mogÄ… zwracać różne dane, nas bÄ™dÄ… interesować dane z bazy danych których obsÅ‚uga jest równie prosta jak tworzenie modelu! Joomla udostÄ™pnia nam gotowe klasy i funkcje które należy odpowiednio wykorzystać. No cóż, ale koniec tego wywodu miaÅ‚o być krótko.


Mamy gotowy model. Jak wiÄ™c teraz wykorzystać funkcje w nim zawarte? Musimy zmodyfikować nasz widok, który teraz bÄ™dzie 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. $model =& $this->getModel();
  11. $dane = $model->pobierzDane();
  12. $this->assignRef( 'mojedane', $dane );
  13. parent::display($tpl);
  14. }
  15. }
  16. ?>
 

Tutaj dużo nie będe tłumaczył ponieważ widok był opisany w poprzedniej lekcji. Nowością jest tutaj:

 

$model = & $this->getModel();


funkcja ta przypisuje zmiennej $model instancję naszego modelu (jeśli nie podamy parametru to szukany jest model o nazwie takiej jak nazwa widoku). Jeśli chcemy załadować inny model o nazwie np. test funkcję wywołujemy następująco:

 

$innyModel =& $this->getModel('test');


NastÄ™pna linia to $dane = $model->pobierzDane(); która zmiennej $dane przypisuje wynik dziaÅ‚ania funkcji pobierzDane() którÄ… zaimplementowaliÅ›my w naszym modelu. Reszta kodu byÅ‚a opisana w poprzediej lekcji.

 

MyÅ›lÄ™ że na chwilÄ™ obecnÄ… wystarczy tyle informacji, w nastÄ™pnej lekcji prawodpodobnie napiszÄ™ o pobieraniu danych z baz danych. Tak wiÄ™c zapraszam do ponownych odwiedzin i oczywiÅ›cie gÅ‚osowania w ankiecie. JeÅ›li chcesz siÄ™ przyczynić do szybkoÅ›ci powstawania artykuÅ‚ów proszÄ™ rozpowszechniaj adres tej strony, zwiÄ™kszony ruch motywuje mnie do tworzenia kolejnych lekcji.

 

Zmieniony ( 15.05.2008. )
 
« poprzedni artykuÅ‚   nastÄ™pny artykuÅ‚ »