Het ontwikkelen van een MVC Component - Toevoegen van variabele verzoek in het menutype
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).
Inleiding
Deze handleiding is een onderdeel van de Het ontwikkelen van een MVC Component voor Joomla! 3.2 uitleg. Het is aan te raden om de vorige delen van deze handleiding te lezen voordat u dit onderdeel leest.
- U kunt een video bekijken die gerelateerd is aan deze stap van de handleiding op Stap 5, Toevoegen van variabele verzoek in het menu.
Op dit moment is het weergegeven bericht steeds Hello World!. Sinds Joomla! 2.5, is het mogelijk om parameters toe te voegen aan menu types. In ons geval doen we dit in het site/views/helloworld/tmpl/default.xml bestand:
site/views/helloworld/tmpl/default.xml
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE">
<message>COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_DESC</message>
</layout>
<fields name="request">
<fieldset name="request">
<field
name="id"
type="list"
label="COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL"
description="COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC"
default="1">
<option value="1">Hello World!</option>
<option value="2">Good bye World!</option>
</field>
</fieldset>
</fields>
</metadata>
We voegen een type list (lijst) veld toe in het menu. Dit is een van de Joomla Standaard Formulierveld types.
Twee belangrijke dingen om te weten:
- de request groep van de velden geven verplichte velden aan.
- de naam attribute kan doorgegeven worden aan de component in de URL. In dit geval ?option=com_helloworld&id=1 betekent dat optie 1 is gekozen.
het model moet aangepast worden om te kunnen wisselen tussen de twee verschillende berichten (afhankelijk van welke gekozen is door de administrator met de bovenstaande gedefinieerde velden):
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))
{
$jinput = JFactory::getApplication()->input;
$id = $jinput->get('id', 1, 'INT');
switch ($id)
{
case 2:
$this->message = 'Good bye World!';
break;
default:
case 1:
$this->message = 'Hello World!';
break;
}
}
return $this->message;
}
}
Bewerk ook uw helloworld.xml bestand om de nieuwe versie aan te geven:
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.5</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>
U kunt dit variabele verzoek testen door index.php?option=com_helloworld&view=helloworld&id=1 of index.php?option=com_helloworld&view=helloworld&id=2 in de adresbalk van uw browser te typen.
Inpakken van de component
Inhoud van uw code map:
- helloworld.xml
- site/helloworld.php
- site/index.html
- site/controller.php
- site/views/index.html
- site/views/helloworld/index.html
- site/views/helloworld/view.html.php
- site/views/helloworld/tmpl/index.html
- site/views/helloworld/tmpl/default.xml
- site/views/helloworld/tmpl/default.php
- site/models/index.html
- site/models/helloworld.php
- admin/index.html
- admin/helloworld.php
- admin/sql/index.html
- admin/sql/updates/index.html
- admin/sql/updates/mysql/index.html
- admin/sql/updates/mysql/0.0.1.sql
Maak een gecomprimeerd bestand aan van deze map of download direct het archief en installeer het via Extensiebeheer van Joomla. U kunt een menu-item aanmaken voor deze component met behulp van het menubeheer in het beheergedeelte.
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.