【问题标题】:Zend Plugin found in view not in layoutZend 插件在视图中而不是在布局中
【发布时间】:2012-07-28 09:46:43
【问题描述】:

我有一个插件可以检索按钮列表。 当我从视图(echo $this->GetAdminButtons())调用这个插件时,它工作正常。 但是我需要从 layout.phtml 调用这个插件,当我这样做时,应用程序就会停止(白屏,无输出)

当我尝试获取异常消息时,我收到此错误:

Plugin by name 'GetAdminButtons' was not found in the registry;
used paths: 
    Zend_View_Helper_Navigation_: Zend/View/Helper/Navigation/ 
    Zend_View_Helper_:            Zend/View/Helper/:./views/helpers/

在application.ini中

resources.view.helperPath.Admin_View_Helper = "Admin/View/Helper"

这让我很困惑,因为它在视图 .phtml 文件中工作正常

提前致谢,

【问题讨论】:

  • 助手在哪里? views/helpers/GetAdminButtons.php?
  • 它位于library/Admin/View/Helper/GetAdminButtons.php中,并且该目录在application.ini中设置为helper路径。
  • 该路径未包含在错误的路径列表中。您能否编辑您的问题以包含您在其中设置帮助程序路径的 application.ini 的相关部分?
  • 您的配置中是否有一些以resources.layout 开头的行?如果是这样,将它们移到视图线上方是否有效?
  • 布局线已经在视图线之上。我还尝试将文件放在每个已知的视图/帮助文件夹中,但仍然没有运气。有什么想法吗?

标签: php zend-framework layout plugins view-helpers


【解决方案1】:

继续来自 cmets 的讨论。尝试在您的配置中移动 resources.layout 行,以便它们位于 resources.view 之后(我在评论中的建议是错误的)。

我认为您的问题是布局在视图之前被初始化,这就是布局中不存在视图路径的原因。

【讨论】:

  • 我确实切换了两种方式,看看是否有任何不同,但没有。
  • 你的引导类中有 _init 方法吗?
  • 是的,我有一些,也是受保护的函数 _initViewHelpers() { $this->bootstrap('layout'); $view = $this->getResource('layout')->getView(); }
  • 好的,有人叫_initLayout()_initView()吗?
  • 这是同一个问题,只是在不同的地方。尝试将 _initViewHelpers() 中的引导行更改为 $this->bootstrap(array('view', 'layout')); 这会强制它首先引导视图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 2012-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多