zend框架找不到帮手视图文件。获取“按名称插件未找到”的错误

问题描述:

我想简单地使用位于/library/my/view/helpers/friends.phpzend框架找不到帮手视图文件。获取“按名称插件未找到”的错误

自定义视图助手我有这样的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(); ?> 

我在这条线得到一个错误说,它不能找到它已经在路径插件

错误:

Plugin by name 'Friends' was not found in the registry; used paths: My_View_Helper_: /My/View/Helpers/ Zend_View_Helper_: Zend/View/Helper/;C:/http/xampplite/htdocs/zf-tutorial/application/views\helpers/

看起来像使用正确的路径和其该文件在那里。我不明白为什么找不到它?

+0

我一直不得不使用'$ this-> helper()'使它工作。另外我的视图助手都是'Zend_View_Helper_MyHelper'(也许尝试重命名),尽管我没有把它们放在库中,我把它们放在'/ views/helpers'中以保持简单。你没有提到你是否将'autoloaderNamespaces [] = MY_'添加到你的application.ini中。不知道这是否是一个因素。 – RockyFord 2012-03-31 07:03:47

+0

@RockyFord这可能是因为你命名了你的类'Zend_View_Helper_XXX'(如果我正确地读了它),你总是必须使用'$ this-> helper()'。只有正式属于ZF的类应该以'Zend_'或'ZendX_'为前缀(参见[ZF命名约定](http://framework.zend.com/manual/en/coding-standard.naming-conventions.html)) 。它可能与自动加载器在Zend目录中查找助手类有关。 – drew010 2012-03-31 07:15:00

+0

@ drew010我应该说'$ this-> MyHelper()'用'Zend_View_Helper_XXX'作为前缀是默认值。所以我不必注册一个新的帮手路径。它们存储在我的任何'/ views/helpers'目录中。有一天,当我清理应用程序时,我会把它们放在一个地方。此外,这个问题自我发布以来已经清理完毕,所以我的帖子让我感觉不太敏感:) – RockyFord 2012-03-31 09:28:25

我相信问题是正在使用不正确的路径。

...used paths: My_View_Helper_: /My/View/Helpers/

注意路径的路径是/My/View/Helpers。它使用绝对路径。另一个问题是该文件夹应命名为Helper而不是helpers

然后在你application.ini更改配置行这样的:

resources.view.helperPath.My_View_Helper = APPLICATION_PATH "/../library/my/view/helper" 

,并确保你的类被称为My_View_Helper_Friends和文件被命名为Friends.php。案件事宜。这个目录实际上应该被称为My/View/Helper

编辑:假设library在你include_path,你也可以使用该行:

resources.view.helperPath.My_View_Helper = "My/View/Helper" 

注意它不具有领先/。这将在您的include_path中搜索文件夹My/View/Helper中的所有位置。

+0

+1,正确的答案:) – 2012-03-31 07:14:22

+0

我完全按照您对第一个选项的建议。添加了这个路径常量,大写了我的dir名称,并确保助手类名称是正确的。现在我得到这个错误:在注册表中找不到名称为“朋友”的插件;使用路径:My_View_Helper_:C:\ http \ xampplite \ htdocs \ zf-tutorial \ application ../ library/my/view/helper/Zend_View_Helper_:Zend/View/Helper /; C:/ http/xampplite/htdocs/zf- tutorial/application/views \ helpers/ – Andy 2012-03-31 20:26:41

+0

我正在使用Windows 7.请注意,应用程序常量正在反斜出,而其余路径是正斜杠。我认为这是问题。看起来像application.ini中使用该常量的所有路径是混合正向和反向斜线。 – Andy 2012-03-31 20:29:01