J3.x

Het ontwikkelen van een MVC Component - Toevoegen van een model aan de website

From Joomla! Documentation

< J3.x:Developing an MVC Component
This page is a translated version of the page J3.x:Developing an MVC Component/Adding a model to the site part and the translation is 100% complete.

Other languages:
العربية • ‎English • ‎español • ‎français • ‎Nederlands
Joomla! 
3.x
Handleiding
Het ontwikkelen van een MVC component


Dit is een reeks van artikelen met handleidingen over het ontwikkelen van een Model-View-Controller Component voor Joomla! versieJoomla 3.x.

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

  • U kunt de onderstaande stappen volgen om een model aan de Hello World! component toe te voegen, of u kunt deze rechtstreeks downloaden archief

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
Info non-talk.png
General Information

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.