'site/src/Model/MessageModel.php'
Ici, nous lisons la nouvelle variable de requête via le framework Joomla et décidons laquelle de nos deux salutations afficher. Ce code illustre comment lire les variables de requête dans Joomla 4 :
- `Factory::getApplication()` renvoie l'objet d'application Joomla. Vous utiliserez souvent ce code lors de l'écriture dans Joomla, car il constitue votre point d'entrée dans l'exécution de Joomla.
- `->getInput()` renvoie l'objet \Joomla\Input\Input pour cette requête. Cet objet peut être utilisé pour lire les variables de requête de manière sécurisée et sanitisée.
- `$input->getInt('greetingType', 1);` récupère la valeur de la variable de requête 'greetingType' que nous avons définie précédemment. Si aucune valeur n'est définie, nous avons spécifié qu'elle devrait renvoyer une valeur par défaut de 1.
REMARQUE : Vous ne devez jamais utiliser de superglobales comme $_GET ou $_POST pour accéder aux variables de requête ou à d'autres entrées. Utilisez le framework Joomla pour accéder à toute donnée transmise ou soumise, afin de garantir qu'elle soit correctement gérée et sanitisée.
Avec la variable de requête lue, nous choisissons simplement laquelle de nos deux salutations possibles renvoyer au modèle.
<?php
namespace JohnSmith\Component\HelloWorld\Site\Model;
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\MVC\Model\ItemModel;
use Joomla\CMS\Language\Text;
/**
* @package Joomla.Site
* @subpackage com_helloworld
*
* @copyright Copyright (C) 2020 John Smith. All rights reserved.
* @license GNU General Public License version 3; see LICENSE
*/
/**
* Hello World Message Model
* @since 0.0.5
*/
class MessageModel extends ItemModel {
/**
* Returns a message for display
* @param integer $pk Primary key of the "message item", currently unused
* @return object Message object
*/
public function getItem($pk= null): object {
// This gives us a Joomla\Input\Input object
$input = Factory::getApplication()->getInput();
$greetingType = $input->getInt('greetingType', 1);
$item = new \stdClass();
switch($greetingType) {
case 2:
$item->message = Text::_('COM_HELLOWORLD_MSG_GREETING_GOODBYE');
break;
case 1:
default:
$item->message = Text::_('COM_HELLOWORLD_MSG_GREETING_HELLO');
break;
}
return $item;
}
}