Debugging ZF2调试自定义视图帮助程序

Debugging ZF2调试自定义视图帮助程序,debugging,zend-framework2,view-helpers,Debugging,Zend Framework2,View Helpers,我使用Zend Framework 2自定义视图帮助器: $uri = $this->view->vars()->mainMenu->findById('h'); mainMenu属性是Zend\Navigation\Navigation对象 结果是,我的视图脚本的呈现在执行视图辅助程序时停止,并且没有任何错误消息。因此,对于所有实际用途来说:死亡的白色屏幕 在此视图中,辅助线为: $uri = $this->view->vars()->mainMen

我使用Zend Framework 2自定义视图帮助器:

$uri = $this->view->vars()->mainMenu->findById('h');
mainMenu属性是Zend\Navigation\Navigation对象

结果是,我的视图脚本的呈现在执行视图辅助程序时停止,并且没有任何错误消息。因此,对于所有实际用途来说:死亡的白色屏幕

在此视图中,辅助线为:

$uri = $this->view->vars()->mainMenu;
确实有效,所以显然问题出在findById()方法上

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

我的问题是:

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

和/或(更重要的是):


如何在view helper环境中调试此问题(以及其他经常出现的问题)?

问题在于
findById()
不存在。检查扩展的位置

正确的方法(我想)是,或者


首先解决问题的第二部分,安装XDEBUG(在Zend Server CE上),最后给出一些错误输出(在非对象上调用方法),从而发现问题

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

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

$uri = $this->view->layout()->getVariables()->mainNav->findById('h');
我在这里找到了解决方案:


这些方法也不起作用,findById被_调用捕获并重定向到findOneBy。无论如何,findById在我的视图脚本中工作。你是对的,但是建议不要让
\u call()
处理事情
Zend\Debug\Debug::dump(vars()->main menu)
它可能是一个导航对象,但它是您期望的对象吗?是的,它是一个nav对象,包含我正在查找的页面(我的视图脚本中的代码确实找到了该页面)。我可以转储nav对象,但一旦我尝试findOneBy方法,就根本没有错误输出。Thx,您为我指明了正确的方向:问题是我在转储nav对象后确实“退出”。第一次,在我的布局脚本中使用helper,它执行得很好。只有第二次,在我的视图脚本中,它找不到对象。但我并没有做到这一点,因为退出。顺便说一下,我用FindOneBy()替换了FindById()。
$uri = $this->view->layout()->getVariables()->mainNav->findById('h');