--=REKLAMA=--

Projektowanie komponentu według wzorca Model-Widok-Kontroler - Część 2 - Dodanie modelu

Z Joomla!WikiPL

Ikona przetlumacz.png
 Uwaga o zawartości

Ta strona wymaga przetłumaczenia lub jest w trakcie tłumaczenia! Pomoc jest mile widziana. Ostatnio edytowane przez Zwiastun (dyskusja. Data edycji: Sat, 07 Dec 2013 21:04:50 +0000

Wprowadzenie

W pierwszej części tutoriala z tej serii, został przedstawiony prosty widok-kontroler za pomocą Joomla! 1.5 Framework CMS.

W pierwszej lekcji, zmienna $greeting zostałą na sztywno wpisana do widoku. To nie jest zgodne z wzorcem MVC właśnie dlatego, że widok jest przeznaczony tylko do wyświetlania danych.

W drugiej części kursu pokażemy jak poruszać się z widoku do modelu. W przyszłości tutoriale pokażą moc i elastyczność, jaką zapewnia ten wzorzec.

Tworzenie modelu

The concept of model gets its name because this class is intended to represent (or 'model') some entity. In our case, our first model will represent a 'hello', or a greeting. This is in line with our design thus far, because we have one view ('hello'), which is a view of our greeting.

Konwencja nazewnicza dla modeli w Joomla! framework zakłada, że nazwa klasy zaczyna się od nazwy komponentu (w naszym przypadku "hello", a następnie 'model', po którym następuje nazwa modelu. W związku z tym nasza klasa model nazywa się HelloModelHello.

W tym momencie stworzymy jeden model, który zwróci wynik działania funkcji. Będziemy zatem mieć jedną funkcje, zwaną getGreeting(). która zwróci napis 'Hello, World! ".


Kod modelu w site/models/hello.php:

<?php
/**
 * Hello Model for Hello World Component
 * 
 * @package    Joomla.Tutorials
 * @subpackage Components
 * @link http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_2
 * @license    GNU/GPL
 */
 
// No direct access
 
defined( '_JEXEC' ) or die( 'Restricted access' );
 
jimport( 'joomla.application.component.model' );
 
/**
 * Hello Model
 *
 * @package    Joomla.Tutorials
 * @subpackage Components
 */
class HelloModelHello extends JModel
{
    /**
    * Gets the greeting
    * @return string The greeting to be displayed to the user
    */
    function getGreeting()
    {
        return 'Hello, World!';
    }
}

Można zauważyć, linię, która zaczyna się jimport. Funkcja jimport służy do ładowania plików z Joomla! framwork, które są wymagane do działania naszego komponentu. Funkcja ta załaduje plik /libraries/joomla/application/component/model.php. Kropki '.' są używane jako separatory katalogu i ostatnia część to nazwa pliku do załadowania. Wszystkie pliki są ładowane w stosunku do katalogu libraries. Ten konkretny plik zawiera definicję klasy do klasy JModel, co jest konieczne, ponieważ nasz model rozszerza tą klasę.

Teraz, gdy stworzyliśmy model, musimy zmienić nasz widok tak, żeby używał go w celu uzyskania napisu "Hello, World!".

Używanie modelu

Joomla! framework jest ustawiony w taki sposób, że kontroler będzie automatycznie ładować model, który ma taką samą nazwę jak widok. Ponieważ nasz widok nazywa się "Hello", to nasz model "Hello" zostanie automatycznie załadowany do widoku. Dlatego możemy łatwo uzyskać odniesienie do naszego modelu za pomocą funkcji JView::getModel(). (Jeśli chcemy wywołać model nie po tej konwencji, możemy podać nazwę modelu do JView::getModel())


Nasze poprzedni kod widoku wygląda tak:

$greeting = "Hello World!";

Aby skorzystać z naszego modelu zmieniamy tą liniie w to:

$model = &$this->getModel(); //&$this wskazuje na metode w klasie JView
$greeting = $model->getGreeting();

Kompletny widok wygląda teraz tak:

<?php
/**
 * @package    Joomla.Tutorials
 * @subpackage Components
 * @link http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_2
 * @license    GNU/GPL
*/
 
// No direct access
 
defined( '_JEXEC' ) or die( 'Restricted access' );
 
jimport( 'joomla.application.component.view');
 
/**
 * HTML View class for the HelloWorld Component
 *
 * @package    HelloWorld
 *
 * com_hello/views/hello/view.html.php
 */
 
class HelloViewHello extends JView
{
    function display($tpl = null)
    {
        $model = &$this->getModel();
        $greeting = $model->getGreeting();
        $this->assignRef( 'greeting',	$greeting );
 
        parent::display($tpl);
    }
}

Dodanie do pakietu

Pozostaje tylko dodać wpis w pliku XML tak, że nasz nowy model zostanie skopiowany. Joomla! framework będzie szukać naszego modelu w katalogu modeli, więc wpis dotyczący tego pliku wygląda tak (należy dodać do sekcji site):

<filename>models/hello.php</filename>

Nasz nowy hello.xml plik będzie wyglądał tak:

<?xml version="1.0" encoding="utf-8"?>
<install type="component" version="1.5.0">
 <name>Hello</name>
 <!-- Następujące elementy są opcjonalne i bez ograniczeń formatowania -->
 <creationDate>2007-02-22</creationDate>
 <author>John Doe</author>
 <authorEmail>john.doe@example.org</authorEmail>
 <authorUrl>http://www.example.org</authorUrl>
 <copyright>Copyright Info</copyright>
 <license>License Info</license>
 <!--  Ciąg version jest rejestrowane w tabeli -->
 <version>1.01</version>
 <!-- Opis jest opcjonalny i domyślnie nazwa -->
 <description>Description of the component ...</description>
 
 <!-- Strona główna lista plików -->
 <!-- Uwaga atrybut folder:site
       Pliki zostana przeniesione do components/com_hello/  -->
 <files folder="site">
  <filename>controller.php</filename>
  <filename>hello.php</filename>
  <filename>index.html</filename>
  <filename>models/hello.php</filename>
  <filename>models/index.html</filename>
  <filename>views/index.html</filename>
  <filename>views/hello/index.html</filename>
  <filename>views/hello/view.html.php</filename>
  <filename>views/hello/tmpl/default.php</filename>
  <filename>views/hello/tmpl/index.html</filename>
 </files>
 
 <administration>
  <!-- Administration Menu Section -->
  <menu>Hello World!</menu>
 
  <!-- Administrator lista plików -->
	 <!-- Uwaga atrybut folder:admin
       Pliki zostana przeniesione do administrator/components/com_hello/  -->
  <files folder="admin">
   <filename>hello.php</filename>
   <filename>index.html</filename>
  </files>  
 
 </administration>
</install>

Zakończenie

Teraz mamy prosty komponent MVC. Każdy element jest bardzo prosty, ale zapewnia dużą elastyczność i moc.

Artykuły z tej serii

Autor

  • staalanden
© Ten materiał jest dokładnym albo swobodnym tłumaczeniem artykułu http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_2_-_Adding_a_Model udostępnionego na licencji JEDL na witrynie: Joomla! Official Documentation Wiki

Dziękujemy za wkład

» Stefan Wajda [zwiastun],