跳至主要内容
版本: 5.1

步骤 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" 当您未登录时