步骤 3 添加助手文件
介绍
在本步骤中,我们将助手文件添加到模块。助手文件用于在 Joomla 中保存复杂的逻辑,从而使主模块代码保持简单。
在这种情况下,我们使用助手文件来查找当前登录用户的用户名,然后输出"Hello <username>"
。如果用户未登录,则输出"Hello Guest"
。
源代码可在 mod_hello step 3 中找到。
助手文件
遵循 Joomla 约定,我们将助手类命名为 HelloHelper,并将其存储在 src/Helper/HelloHelper.php 中。这意味着我们的命名空间和类定义必须为
namespace My\Module\Hello\Site\Helper;
class HelloHelper { ... }
在助手文件中,我们获取登录用户的用户名;以下是助手类的完整代码
mod_hello/src/Helper/HelloHelper.php
<?php
namespace My\Module\Hello\Site\Helper;
\defined('_JEXEC') or die;
use Joomla\CMS\Factory;
class HelloHelper
{
public static function getLoggedonUsername(string $default)
{
$user = Factory::getApplication()->getIdentity();
if ($user->id !== 0) // found a logged-on user
{
return $user->username;
}
else
{
return $default;
}
}
}
调度程序
我们有两种方法可以访问 HelloHelper 类。在本步骤中,我们将使用命名空间直接访问它。稍后,当我们查看依赖注入时,我们将更改代码以使用通过 HelperFactory 类实例化它的替代方法。
mod_hello/src/Dispatcher/Dispatcher.php
<?php
namespace My\Module\Hello\Site\Dispatcher;
\defined('_JEXEC') or die;
use Joomla\CMS\Dispatcher\DispatcherInterface;
use Joomla\CMS\Helper\ModuleHelper;
use My\Module\Hello\Site\Helper\HelloHelper;
class Dispatcher implements DispatcherInterface
{
public function dispatch()
{
$username = HelloHelper::getLoggedonUsername('Guest');
$hello = "Hello {$username}";
require ModuleHelper::getLayoutPath('mod_hello');
}
}
清单文件更新
我们已经在我们的文件列表中包含了 /src 目录,Joomla 应该处理这些文件,因此我们只需指定更新的版本号。
mod_hello/mod_hello.xml
<?xml version="1.0" encoding="UTF-8"?>
<extension type="module" client="site" method="upgrade">
<name>Joomla module tutorial</name>
<version>1.0.3</version>
<author>me</author>
<creationDate>today</creationDate>
<description>Code used in the Joomla module tutorial</description>
<namespace path="src">My\Module\Hello</namespace>
<files>
<folder module="mod_hello">services</folder>
<folder>src</folder>
<folder>tmpl</folder>
</files>
</extension>
安装
再次,将您的 mod_hello 目录压缩并安装升级后的模块到 Joomla。
当您导航到网站页面时,您现在应该看到
"Hello <您的用户名>"
模块显示在您登录时"Hello Guest"
当您未登录时