抱歉,我们已经看了一百万个答案,但我们要么不理解它们,要么它们不适用。
<小时 />导航助手:
我们有一个 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 使用,因此更改我的自定义文件的文件名使这一切都有效。