ZF2调试自定义视图助手

时间:2013-02-22 19:08:10

标签: debugging zend-framework2 view-helpers

我使用的Zend Framework 2自定义视图助手:

$uri = $this->view->vars()->mainMenu->findById('h');

mainMenu属性是Zend \ Navigation \ Navigation对象。

结果是我的视图脚本的渲染在执行视图助手时停止,没有任何错误消息。因此,出于所有实际目的:死亡的白色屏幕。

在此视图中帮助行:

$uri = $this->view->vars()->mainMenu;

确实有效,所以显然问题在于findById()方法。

但是如果我直接在我的视图脚本中使用第一行,我会得到预期的结果,一个包含我主页的url的字符串:'/'。

我的问题是:

我的视图助手中的findById()方法有什么问题?

和/或(更重要的是):

如何在视图助手环境中调试此问题(以及其他问题,这是一个反复出现的问题)?

2 个答案:

答案 0 :(得分:1)

问题是findById()不存在。查看Zend\Navigation\AbstractActionContainer扩展的Zend\Navigation\Navigation

正确的方法(我猜)是findBy()findAllBy()findOneBy()

$this->view->vars()->mainMenu->findOneBy('id', 'my-id-to-find');

答案 1 :(得分:0)

通过首先解决我的问题的第二部分,通过安装XDEBUG(在Zend Server CE上)找到问题,最终给出了一些错误输出(在非对象上调用方法)。

在我专注于布局视图脚本的地方,同样的视图助手也存在于我的(最终)视图脚本中,导航对象在我使用的引用下不可用。

在视图和布局脚本中都有效:

$uri = $this->view->layout()->getVariables()->mainNav->findById('h');

我在这里找到了解决方案:

http://akrabat.com/zend-framework-2/access-view-variables-in-another-view-model/