Concrete5 package helper - How to fix Fatal error: Call to undefined method NavigationHelper::getURLSegment() error?

Concrete5 package helper - How to fix Fatal error: Call to undefined method NavigationHelper::getURLSegment() error?

抱歉,我们已经查看了一百万个答案,但我们要么不理解它们,要么它们不适用。


导航助手:

我们有一个 concrete5 包并在以下位置创建了一个帮助文件: /packages/package-name/helpers/navigation.php

它包含以下内容:

<?php defined('C5_EXECUTE') or die('ACCESS DENIED') ?>

<?php

class NavigationHelper {

    // Get URL segments
    public function getURLSegments() {
        return explode("/", parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
    }

    // Get a specific URL segment
    public function getURLSegment($n) {
        $segs = $this->getURLSegments();
        return count($segs) > 0 && count($segs) >= ($n-1)?$segs[$n]:'';
    }
}

加载助手

然后我们有一个元素文件,我们在其中加载包助手,如下所示:

$navHelper = Loader::helper('navigation','package-name');

调用方法

但是当我们尝试调用这样的方法时:

if ($navHelper->getURLSegment(1) == 'whats-on') {
    echo "What's on";
}

我们看到:

Fatal error: Call to undefined method NavigationHelper::getURLSegment()

我们已经关注方法和包名称一个小时了,所以显然缺少一些基本的东西 - 我们缺少什么?

如有任何帮助,我们将不胜感激。

干杯

对于遇到此问题的任何其他人,自定义工具文件不能与 C5 工具具有相同的文件名。

navigation.php 已经被 C5 使用,所以更改我的自定义文件的文件名使这一切都有效。