web-dev-qa-db-ja.com

致命的なエラー:新しい関数を追加しようとしているときに、Joomla 4モジュールでクラス 'ArticlesLatestHelper'が見つかりません

Joomla 4 alphaをテストして遊んでいます。私がやろうとしたことは、モジュールの最新記事(mod_articles_latest)をすばやく編集/変更して、新しい関数を追加することです。

Joomla 3.xでは、通常、次のようにhelper.phpファイルに追加することで、モジュールに新しい関数を追加します。

class ModNameHelper
{
    public static function myFunctionName($param1,$param2)
    { ...

次に、default.phpから次のように呼び出します。

ModNameHelper::myFunctionName($param1,$param2);

今度は、myCustomFunctionをArticlesLatestHelper.phpに次のように追加して、これらの手順をmod_articles_latestで複製しようとしました。

/**
 * @package     Joomla.Site
 * @subpackage  mod_articles_latest
 *
 * @copyright   Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

namespace Joomla\Module\ArticlesLatest\Site\Helper;

defined('_JEXEC') or die;

use Joomla\CMS\Access\Access;
use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Factory;
use Joomla\CMS\Router\Route;
use Joomla\Component\Content\Site\Model\ArticlesModel;
use Joomla\Registry\Registry;
use Joomla\Utilities\ArrayHelper;

\JLoader::register('ContentHelperRoute', JPATH_SITE . '/components/com_content/helpers/route.php');

/**
 * Helper for mod_articles_latest
 *
 * @since  1.6
 */
abstract class ArticlesLatestHelper
{
    /**
     * Retrieve a list of article
     *
     * @param   Registry       $params  The module parameters.
     * @param   ArticlesModel  $model   The model.
     *
     * @return  mixed
     *
     * @since   1.6
     */
    public static function getList(Registry $params, ArticlesModel $model)
    { // this is the built-in function ... }


    public static function myCustomFunction($myparam) {
}

そして、このようにdefault.phpで関数を呼び出しました

ArticlesLatestHelper::myCustomFunction($myparam);

しかし、それは致命的なエラーを返しました:

Error: Class 'ArticlesLatestHelper' not found: Class 'ArticlesLatestHelper' not found

誰かが私に言うことができます、私はここで何が間違っているのですか?ありがとう!

2
webchun

次のように、default.phpの上部にそのヘルパークラスを含めます。

defined('_JEXEC') or die;

use Joomla\Module\ArticlesLatest\Site\Helper\ArticlesLatestHelper;

次に、そのクラスをdefault.phpファイル内で使用できます

または、次のようにmod_articles_latest.phpに独自の変数を標準で定義します。

$myStuffHere = ArticlesLatestHelper::myCustomFunction($myparam);

そして、その変数名$myStuffHerein default.phpの戻り値を使用できます

これはあなたが探しているものだと思います。

2
Zollie