'site/src/Controller/DisplayController.php'
Nous allons indiquer au DisplayController d'ajouter notre nouveau modèle à la vue lors de son chargement. Comme nous n'avons actuellement qu'une seule vue, cela suffira pour le moment. À mesure que notre composant deviendra plus complexe, nos vues auront leurs propres contrôleurs et pourront charger leurs propres modèles de manière indépendante.
<?php
namespace JohnSmith\Component\HelloWorld\Site\Controller;
defined('_JEXEC') or die;
use Joomla\CMS\MVC\Controller\BaseController;
use Joomla\CMS\Factory;
/**
* @package Joomla.Site
* @subpackage com_helloworld
*
* @copyright Copyright (C) 2020 John Smith. All rights reserved.
* @license GNU General Public License version 3; see LICENSE
*/
/**
* HelloWorld Component Controller
* @since 0.0.2
*/
class DisplayController extends BaseController {
public function display($cachable = false, $urlparams = array()) {
$document = Factory::getDocument();
$viewName = $this->input->getCmd('view', 'login');
$viewFormat = $document->getType();
$view = $this->getView($viewName, $viewFormat);
$view->setModel($this->getModel('Message'), true);
$view->document = $document;
$view->display();
}
}
'site/tmpl/hello/default.php'
La dernière modification fonctionnelle à apporter est d'ajouter la sortie du message dans notre modèle de site. Dans le contexte d'un modèle de composant, la variable $this fait référence à l'objet de vue. Vous vous souvenez d'avoir défini le modèle sur la vue dans le fichier précédent ? Nous le récupérons ici et affichons le message.
<?php
use Joomla\CMS\Language\Text;
/**
* @package Joomla.Administrator
* @subpackage com_helloworld
*
* @copyright Copyright (C) 2020 John Smith. All rights reserved.
* @license GNU General Public License version 3; see LICENSE
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted Access');
?>
<h2><?= Text::_('COM_HELLOWORLD_MSG_HELLO_WORLD') ?></h2>
<p><?= $this->getModel()->getItem()->message; ?></p>
'helloworld.xml'
Il n'est techniquement pas nécessaire d'apporter de nouvelles modifications dans le fichier manifeste pour ces changements. Cependant, pour des raisons de cohérence, nous allons augmenter la version du composant dans le fichier manifeste.
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="4.0" method="upgrade">
<name>Hello World</name>
<!-- The following elements are optional and free of formatting constraints -->
<creationDate>December 2020</creationDate>
<!-- Dummy author, feel free to replace anywhere you see it-->
<author>John Smith</author>
<authorUrl>https://smith.ca</authorUrl>
<copyright>John Smith</copyright>
<license>GPL v3</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>
A hello world component!
</description>
<!-- This is the PHP namespace under which the extension's
code is organised. It should follow this format:
Vendor\Component\ComponentName
"Vendor" can be your company or your own name
The "ComponentName" section MUST match the name used
everywhere else for your component. Whatever the name of
this XML file is, the namespace must match (ignoring CamelCase).
-->
<namespace path="src/">JohnSmith\Component\HelloWorld</namespace>
<files folder="site/">
<folder>language</folder>
<folder>src</folder>
<folder>tmpl</folder>
</files>
<languages>
<language tag="en-GB">site/language/en-GB/en-GB.com_helloworld.ini</language>
</languages>
<administration>
<!-- The link that will appear in the Admin panel's "Components" menu -->
<menu link="index.php?option=com_helloworld">Hello World</menu>
<!-- List of files and folders to copy, and where to copy them -->
<files folder="admin/">
<folder>language</folder>
<folder>services</folder>
<folder>src</folder>
<folder>tmpl</folder>
</files>
<languages>
<language tag="en-GB">admin/language/en-GB/en-GB.com_helloworld.ini</language>
<language tag="en-GB">admin/language/en-GB/en-GB.com_helloworld.sys.ini</language>
</languages>
</administration>
</extension>
Test du composant
Tout comme précédemment, compressez votre nouvelle version du composant et téléchargez-la dans le panneau d'administration de votre installation Joomla!. Une fois cela fait, accédez à la partie frontale de votre site Joomla. Cliquez sur le lien "Hello World" que nous avons créé dans le menu. Vous devriez voir le nouveau message dans le modèle de la page.

Ensuite, nous allons apprendre comment ajouter des paramètres aux éléments de menu et comment les lire dans le code. Après cela, nous commencerons à connecter notre composant à la base de données.