2013-02-22 55 views
0

我我使用Zend框架2自定義視圖助手:ZF2調試的自定義視圖助手

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

的MAINMENU屬性是一個Zend \導航\導航對象。

結果是我的視圖腳本的渲染停止在執行視圖幫助器時沒有任何錯誤消息。所有的實際目的:死亡的白幕。

在這個視圖助手行:

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

沒有工作,所以很明顯的問題是與findById()方法。

但是,如果我直接在我的視圖腳本中使用第一行,我會得到預期的結果,一個包含我的主頁的URL的字符串:'/'。

我的問題是:

什麼是在我看來幫手findById()方法的問題?

和/或(更重要的):

如何調試這(和其他,這是一個反覆出現的問題)在視圖助手環境問題?

回答

0

發現問題首先解決我的問題的第二部分,通過安裝Xdebug的(關於Zend服務器CE),它終於放棄一些錯誤輸出(在非對象上調用方法)。

在哪裏,我專注於我的佈局視圖腳本,同樣的視圖助手也是我的(最終)視圖腳本存在,其中導航對象我使用的標記下不可用。

什麼視圖和佈局腳本的工作原理是:

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

我在這裏找到我的解決方案:

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

1

問題是findById()不存在。檢查Zend\Navigation\Navigation延伸的Zend\Navigation\AbstractActionContainer

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

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

這些方法都不能工作,findById由__call獲取,並重定向到findOneBy。無論如何,findById在我的視圖腳本中起作用。 – tihe 2013-02-22 19:40:25

+0

你說得對,它建議不要讓__call()處理事情。 'Zend \ Debug \ Debug :: dump(vars() - > mainMenu)'它可能是一個導航對象,但它是你期望的那個嗎? – Sam 2013-02-22 19:46:02

+0

是的,它是一個包含我正在尋找的頁面的導航對象(並且我的視圖腳本中的相同代碼確實找到該頁面)。我可以轉儲nav對象,但是一旦我嘗試findOneBy方法,根本就沒有錯誤輸出。 – tihe 2013-02-23 11:27:57

相關問題