Het ontwikkelen van een MVC Component - Toevoegen van een model aan de website
From Joomla! Documentation
< J3.x:Developing an MVC Component
Artikelen in deze reeks
Het toevoegen van een menu aan de website
Het toevoegen van een model aan de website
Een 'variable request' toevoegen in het menu type
De database gebruiken
Basis beheergedeelte
Het toevoegen van taalbeheer
Het toevoegen van acties in het beheergedeelte
Het toevoegen van decoraties aan het beheergedeelte
Het toevoegen van controles
Het toevoegen van categorieën
Het toevoegen van configuratie
Het toevoegen van een installatie/deïnstallatie/update script-bestand
Een formulier op de website toevoegen
Het gebruik van de taal filterfunctie
- Een modaal venster toevoegen
- Het toevoegen van associaties
- Het toevoegen van uitchecken
- Het toevoegen van volgorde
- Het toevoegen van niveaus
- Het toevoegen van versies
- Het toevoegen van tags
- Het toevoegen van rechten
- Het toevoegen van batch-proces
- Het toevoegen van cache
- Het toevoegen van een feed
Het toevoegen van een update-server
Dit is een reeks van artikelen met handleidingen over het ontwikkelen van een Model-View-Controller Component voor Joomla! versie.
Begin met de Introductie en navigeer door de artikelen van de reeks door middel van de navigatieknop onderaan of het vak rechts (Artikelen in deze reeks).
Toelichting
- Deze handleiding is een onderdeel van de Het ontwikkelen van een MVC Component voor Joomla! 3.x tutorial. Het is aan te bevelen om eerst de voorgaande delen te lezen, alvorens hiermee te beginnen.
- U kunt de onderstaande stappen volgen om een model aan de Hello World! component toe te voegen, of u kunt deze rechtstreeks downloaden archief
- U kunt een video bekijken die gerelateerd is aan deze stap van de handleiding op Stap 4, Toevoegen van een model.
Toevoegen van een model aan Hello World
In dit artikel behandelen we hoe een model toegevoegd wordt aan een eenvoudige Joomla! component. In dit voorbeeld werken we verder aan de Hello World! component.
Er zijn verschillende manieren om een Joomla! component te updaten. Net zoals in het vorige deel focussen we ons op optie 2.
1 | Voeg de bestanden handmatig toe aan <path_to_joomla>/ |
2 | Update door gebruik te maken van Joomla! extensiebeheer en de originele, niet gecomprimeerde, map die gebruikt werd voor het installeren van de component |
3 | Update door gebruik te maken van Joomla! extensiebeheer en een updateserver |
Om een model toe te voegen dient u te navigeren naar com_helloworld, hetgeen de originele map is die u gemaakt hebt voor de component. U moet de geüpdate mapstructuur van de vorige handleiding gebruiken. Gebruik de bestandsmanager van uw voorkeur om de volgende bestanden te maken of te updaten; voeg, terwijl u de bestanden maakt of update, de broncode toe die u kunt vinden in de Bestandsgegevens.
1 | Maak: helloworld.php | <path_to_com_helloworld>/site/models/helloworld.php |
2 | Maak: index.html | <path_to_com_helloworld>/site/models/index.html |
3 | Update: view.html.php | <path_to_com_helloworld>/site/views/helloworld/view.html.php |
4 | Update: helloworld.xml | <path_to_com_helloworld>/helloworld.xml |
Updaten van de Hello World! component
Om de Hello World! Component te updaten in de Joomla! website, volgt u dezelfde stappen als voor de originele installatie.
Bestandsgegevens
site/models/helloworld.php
<?php
/**
* @package Joomla.Administrator
* @subpackage com_helloworld
*
* @copyright Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* HelloWorld Model
*
* @since 0.0.1
*/
class HelloWorldModelHelloWorld extends JModelItem
{
/**
* @var string message
*/
protected $message;
/**
* Get the message
*
* @return string The message to be displayed to the user
*/
public function getMsg()
{
if (!isset($this->message))
{
$this->message = 'Hello World!';
}
return $this->message;
}
}
site/views/helloworld/view.html.php
<?php
/**
* @package Joomla.Administrator
* @subpackage com_helloworld
*
* @copyright Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* HTML View class for the HelloWorld Component
*
* @since 0.0.1
*/
class HelloWorldViewHelloWorld extends JViewLegacy
{
/**
* Display the Hello World view
*
* @param string $tpl The name of the template file to parse; automatically searches through the template paths.
*
* @return void
*/
function display($tpl = null)
{
// Assign data to the view
$this->msg = $this->get('Msg');
// Check for errors.
if (count($errors = $this->get('Errors')))
{
JLog::add(implode('<br />', $errors), JLog::WARNING, 'jerror');
return false;
}
// Display the view
parent::display($tpl);
}
}
helloworld.xml
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.0" method="upgrade">
<name>Hello World!</name>
<!-- The following elements are optional and free of formatting constraints -->
<creationDate>January 2018</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>
<!-- The version string is recorded in the components table -->
<version>0.0.4</version>
<!-- The description is optional and defaults to the name -->
<description>Description of the Hello World component ...</description>
<update> <!-- Runs on update; New since J2.5 -->
<schemas>
<schemapath type="mysql">sql/updates/mysql</schemapath>
</schemas>
</update>
<!-- Site Main File Copy Section -->
<!-- Note the folder attribute: This attribute describes the folder
to copy FROM in the package to install therefore files copied
in this section are copied from /site/ in the package -->
<files folder="site">
<filename>index.html</filename>
<filename>helloworld.php</filename>
<filename>controller.php</filename>
<folder>views</folder>
<folder>models</folder>
</files>
<administration>
<!-- Administration Menu Section -->
<menu link='index.php?option=com_helloworld'>Hello World!</menu>
<!-- Administration Main File Copy Section -->
<!-- Note the folder attribute: This attribute describes the folder
to copy FROM in the package to install therefore files copied
in this section are copied from /admin/ in the package -->
<files folder="admin">
<!-- Admin Main File Copy Section -->
<filename>index.html</filename>
<filename>helloworld.php</filename>
<!-- SQL files section -->
<folder>sql</folder>
</files>
</administration>
</extension>
Code verklaring
Indien u nieuwsgierig bent waarom dit werkt zoals het werkt.
helloworld.php
class HelloWorldModelHelloWorld extends JModelItem
{
Deze class zal worden aangeroepen door de class HelloWorldViewHelloWorld.
view.html.php
$this->msg = $this->get('Msg');
De HelloWorldViewHelloWorld class vraagt de model om data gebruikmakend van de get methode van JViewLegacy. Deze get methode converteert de get('Msg') oproep naar een getMsg() oproep op de model, hetgeen de functie is die we moesten verstrekken.
Component inhoud
Op dit moment in de handleiding zou uw component de volgende bestanden moeten bevatten:
1 | helloworld.xml | dit is een XML (manifest) bestand dat Joomla! vertelt hoe de component geïnstalleerd moet worden. |
2 | site/helloworld.php | dit is de site toegang tot de Hello World! component |
3 | site/index.html | voorkomt dat de server de inhoud van de map in een lijst weergeeft |
4 | site/controller.php | bestand die de controller representeert |
5 | site/models/helloworld.php | bestand die de model representeert |
6 | site/models/index.html | voorkomt dat de server de inhoud van de map in een lijst weergeeft |
7 | site/views/index.html | voorkomt dat de server de inhoud van de map in een lijst weergeeft |
8 | site/views/helloworld/index.html | voorkomt dat de server de inhoud van de map in een lijst weergeeft |
9 | site/views/helloworld/view.html.php | bestand die de view representeert |
10 | site/views/helloworld/tmpl/index.html | voorkomt dat de server de inhoud van de map in een lijst weergeeft |
11 | site/views/helloworld/tmpl/default.php | de standaard weergave |
12 | site/views/helloworld/tmpl/default.xml | bestand dat menu-item toevoegt |
13 | admin/index.html | voorkomt dat de server de inhoud van de map in een lijst weergeeft |
14 | admin/helloworld.php | dit is de administrator toegang tot de Hello World! component |
15 | admin/sql/index.html | voorkomt dat de server de inhoud van de map in een lijst weergeeft |
16 | admin/sql/updates/index.html | voorkomt dat de server de inhoud van de map in een lijst weergeeft |
17 | admin/sql/updates/mysql/index.html | voorkomt dat de server de inhoud van de map in een lijst weergeeft |
18 | admin/sql/updates/mysql/0.0.1.sql | bestand die het initialiseren van de schema versie van de component com_helloworld mogelijk maakt |
Maak alstublieft een pull request of issue aan op https://github.com/joomla/Joomla-3.2-Hello-World-Component voor enige foute code of een wijziging van de broncode op deze pagina.