【发布时间】:2012-03-31 06:54:24
【问题描述】:
我试图简单地使用位于 /library/my/view/helpers/friends.php 的自定义视图助手
我在application.ini有这个:
resources.view.helperPath.My_View_Helper = "/my/view/helpers"
这是辅助类:
class My_View_Helper_Friends extends Zend_View_Helper_Abstract {
public function friends() {
$str = "hello world";
return $str;
}
}
这是在视图文件中:
<?php echo $this->friends(); ?>
我在这一行收到一条错误消息,提示它无法在它所在的路径中找到插件。
错误:
在注册表中找不到名为“朋友”的插件;使用的路径: My_View_Helper_: /My/View/Helpers/ Zend_View_Helper_: Zend/View/Helper/;C:/http/xampplite/htdocs/zf-tutorial/application/views\helpers/
看起来它使用了正确的路径并且文件在那里。不明白为什么找不到?
【问题讨论】:
-
我一直必须使用
$this->helper()才能使其工作。此外,我的视图助手都是Zend_View_Helper_MyHelper(也许可以尝试重命名)虽然我没有将它们放在库中,但我将它们保存在/views/helpers中以保持简单。您没有提及是否将autoloaderNamespaces[] = MY_添加到您的application.ini 中。不确定这是否是一个因素。 -
@RockyFord 可能你总是必须使用
$this->helper(),因为你将你的类命名为Zend_View_Helper_XXX(如果我没看错的话)。只有正式属于 ZF 的类才应以Zend_或ZendX_为前缀(请参阅ZF Naming Conventions)。这可能与自动加载器在 Zend 目录中查找帮助程序类有关。 -
@drew010 我应该说
$this->MyHelper()前缀为Zend_View_Helper_XXX是默认设置。所以我不必注册新的辅助路径。它们存储在我的任何/views/helpers目录中。有一天,当我清理应用程序时,我会将它们全部放在一个地方。自从我发布以来,这个问题也被清理了,所以我的帖子没有意义了:) -
我也尝试将 Friends 助手放在 /application/views/helpers/ 中,但仍然出现相同的错误。我将这个类重命名为 Zend_View_Helper_Friends。我必须在帮助文件中包含任何内容吗?
标签: php zend-framework zend-view