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

最初に私の質問の2番目の部分に対処し、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 に答える