我使用的Zend Framework 2自定义视图助手:
$uri = $this->view->vars()->mainMenu->findById('h');
mainMenu属性是Zend \ Navigation \ Navigation对象。
结果是我的视图脚本的渲染在执行视图助手时停止,没有任何错误消息。因此,出于所有实际目的:死亡的白色屏幕。
在此视图中帮助行:
$uri = $this->view->vars()->mainMenu;
确实有效,所以显然问题在于findById()方法。
但是如果我直接在我的视图脚本中使用第一行,我会得到预期的结果,一个包含我主页的url的字符串:'/'。
我的问题是:
我的视图助手中的findById()方法有什么问题?
和/或(更重要的是):
如何在视图助手环境中调试此问题(以及其他问题,这是一个反复出现的问题)?
答案 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/