Module - Helper
Wir ergänzen und Helper.
Für Ungeduldige: Sieh dir den geänderten Programmcode in der Diff-Ansicht[^codeberg.org/astrid/j4examplecode/compare/t31…t32] an und übernimm diese Änderungen in deine Entwicklungsversion.
Schritt für Schritt
Neue Dateien
Module
Die Logik im Modul ist unter Umständen komplex. Deshalb ist gut, den Code übersichtlich zu strukturieren. Dies geschieht mittels Helper-Dateien. Diese legen wir im Verzeichnis Helper
an.
modules/mod_foo/Helper/FooHelper.php
Ich habe die Datei allgemein
FooHelper
benannt. Gute Stil ist es, ihr einen sprechenden Namen zu geben. Jede Hilfsdatei hat eine spezielle Aufgabe und nach ihr sollte sie benannt werden. Die Datei, die die neuesten Artikel lädt, heißt beispielsweiseArticlesLatestHelper
. So erkennt man auf den ersten Blick, was in der Datei steckt.
Um unkompliziert auf die Datei zuzugreifen, ergänzen wir den Namespace namespace FooNamespace\Module\Foo\Site\Helper;
.
modules/mod_foo/ Helper/FooHelper.php
// https://codeberg.org/astrid/j4examplecode/raw/branch/t32/src/modules/mod_foo/src/Helper/FooHelper.php
<?php
/**
* @package Joomla.Site
* @subpackage mod_foo
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace FooNamespace\Module\Foo\Site\Helper;
\defined('_JEXEC') or die;
/**
* Helper for mod_foo
*
* @since __BUMP_VERSION__
*/
class FooHelper
{
/**
* Retrieve foo test
*
* @param Registry $params The module parameters
* @param CMSApplication $app The application
*
* @return array
*/
public function getText()
{
return ' FooHelpertest';
}
}
Geänderte Dateien
modules/mod_foo/services/provider.php
We add the provider for the helper.
public function register(Container $container)
{
$container->registerServiceProvider(new ModuleDispatcherFactory('\\FooNamespace\\Module\\Foo'));
-
+ $container->registerServiceProvider(new HelperFactory('\\FooNamespace\\Module\\Foo\\Site\\Helper'));
+
$container->registerServiceProvider(new Module());
}
};
modules/mod_foo/src/Dispatcher/Dispatcher.php
Der Dispatcher
sammelt alle Variablen, um sie später im Layout tmpl/default.php
zu verwenden. Hier ergänzen wir die Helper-Datei.
namespace FooNamespace\Module\Foo\Site\Dispatcher;
use Joomla\CMS\Dispatcher\AbstractModuleDispatcher;
+use Joomla\CMS\Helper\HelperFactoryAwareInterface;
+use Joomla\CMS\Helper\HelperFactoryAwareTrait;
\defined('_JEXEC') or die;
-class Dispatcher extends AbstractModuleDispatcher
+class Dispatcher extends AbstractModuleDispatcher implements HelperFactoryAwareInterface
{
+ use HelperFactoryAwareTrait;
+
{
$data = parent::getLayoutData();
+ $data['text'] = $this->getHelperFactory()->getHelper('FooHelper')->getText();
+
return $data;
}
}
modules/mod_foo/tmpl/default.php
Im Layout greifen wir abschließen auf die Variable zu. Die Logik zum Errechnen des Variablenwertes ist gekapselt. So bleibt das Layout übersichtlich. Wir fügen hier lediglich den Texgt $test
ein. Wenn wir genauer wissen möchten, was hinter $test
steckt, dann sehen wir im Helper nach.
\defined('_JEXEC') or die;
-echo '[PROJECT_NAME]';
+echo '[PROJECT_NAME]' . $text;
Teste dein Joomla-Module
- Installiere das Modul in Joomla Version 4, um es zu testen:
Kopiere die Dateien im modules
Ordner in den modules
Ordner deiner Joomla 4 Installation.
Installiere dein Module wie in Teil eins beschrieben, nachdem du alle Dateien kopiert hast.
- Überprüfe, ob der über die Funktion
FooHelper::getText()
errechnete Text im Frontend angezeigt wird.
Links
Joomla Dokumentation[^docs.joomla.org/j4.x
/de] GHSVS Demo Modul[^github.com/GHSVS-de/mod_demoghsvs]