正如我在另一篇文章中所說的,我試圖根據自己的需要調整一個開源Intranet。我試圖做的事情之一是讓Intranet在與默認不同的文件夾(從現在開始,$customViewPath
和$defaultViewPath
)查找視圖模板。Zend Framework addScriptPath和Precurio Intranet
我完全沒有Zend Framework的經驗,我很難找出一些東西,但是這個我覺得我已經走到了死衚衕。
我在試圖通過在引導中使用$view->addScriptPath($customViewPath)
來爲視圖模板添加我的自定義路徑。實際上,它的工作原理,但只有在$defaultViewPath
中不存在視圖文件。我想要的僅僅是相反的:如果自定義文件不存在於$customViewPath
中,請從$defaultViewPath
加載默認視圖。
如果我打印getScriptPaths()
,我得到array($defaultViewPath, $customViewPath)
。也就是說,在腳本生命週期的某個地方,$defaultViewPath
被添加到比我的自定義路徑更高優先級的視圖路徑列表中。我無法找到發生這種情況的地方,也不認爲它在每個模塊控制器中。
此外,我知道我必須將自己的代碼片段$view->addScriptPath($customViewPath)
移到bootstrap之外的位置,因爲自定義路徑與模塊相關,但是我無法從自舉中訪問模塊名稱,因爲請求尚未啓動。我想我可以改變這一點,但我想盡可能保持原有的行爲。
我已閱讀關於addScriptPath()
,setScriptPath()
,getScriptPaths()
的所有信息我可以理解,但仍然不知道如何將其應用於我的案例。任何想法都會受到歡迎。
我知道我應該提供有關應用程序的更多信息,但是我缺乏經驗讓我不知道還有什麼是必要的。請隨時索要任何可能使我的問題更清楚的事情。
該應用程序的代碼可以從其網站上下載。我只是不要在這裏發佈鏈接,以免它看起來像垃圾郵件。
編輯:
對不起堅持這個話題,但我越瞭解ZF更困惑我這個問題。
我已經追蹤了視圖路徑堆棧,並且在我的插件preDispatch()和動作preDispatch()函數之間的某處,將默認路徑(我試圖覆蓋的路徑)推入堆棧。
我能想到的唯一一件事就是我的一些其他插件正在執行。我試圖給我的插件一個非常高的執行順序號,但仍然沒有。
如果我說我至少在這個問題上花了兩週的時間(我不能在這個工作上花費更多的時間,我在家花很多時間),我並不誇張,我有閱讀所有我可以把我的手放在調度週期,但我不知道接下來要做什麼。
爲了防萬一我可能是對的,有沒有什麼辦法從動作列出插件正在執行什麼和它們的順序?
我實際上做了你所說的,但之後的某處(我無法找到位置),應用程序添加了自己的腳本路徑(在示例中稱爲$ default),所以我的默認路徑。 – akhasis
您可能會檢查您的application.ini以查看任何可能覆蓋引導條目的視圖資源。同時檢查任何插件以查找改變路徑的代碼。如果你想 – RockyFord
這個引導代碼在這裏[鏈接](https://bitbucket.org/mayorbrain/precurio-v2/src/fded0beca661/application/Bootstrap.php)(()你可以看到整個代碼)。 在$ this-> layout() - > content期間,視圖的路徑被改變(但是它僅僅改變了一些模塊而不改變其他!!)。 沒有更多的調用setScriptPaths和addScriptPaths。 我知道它可能看起來很基本,但我是個不錯的選擇,我不知道該從哪裏出發。感謝您的關注。 – akhasis