0

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

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

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

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

在这个视图助手行中:

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

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

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

我的问题是:

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

和/或(更重要的是):

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

4

2 回答 2

1

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

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

$this->view->vars()->mainMenu->findOneBy('id', 'my-id-to-find');
于 2013-02-22T19:32:23.537 回答
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/

于 2013-02-23T21:31:51.910 回答