混凝土5包 如何修复致命错误:调用未定义的方法导航助手::getURLSegment() 错误


Concrete5 package 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 使用,因此更改我的自定义文件的文件名使这一切都有效。