2011-07-12 57 views
2

像這樣的動作「customSearchAction()」如何映射到視圖腳本文件名稱。zend視圖呈現解析路徑如何查看腳本

這些文件名都不工作「customsearch.xml.phtml」,「customSearch.xml.phtml」,「custom-search.xml.phtml」。

請注意,我正在使用上下文切換查看helper for xml,json。此外,模塊和操作正確解決。當我將操作名稱更改爲「customsearchAction()」並將該腳本文件重命名爲「customsearch.xml.phtml」時,它就可以工作。

那麼在上述情況下視圖腳本文件名是如何解決的呢?在Zend框架

回答

3

documentation

注:命名規則:控制器和如果控制器或者動作名稱由幾個單詞組成動作名稱 字分隔符,調度員要求這些分離上該URL由特定的路徑和單詞分隔符字符組成。 ViewRenderer在創建路徑時用實際路徑定界符('/')替換控制器名稱中找到的任何路徑定界符,以及用破折號(' - ')找到的任何單詞定界符。因此,調用動作/ foo.bar/baz.bat將調度到FooBarController :: bazBatAction()在FooBarController.php中,它將渲染foo-bar/baz-bat.phtml;以動作/ bar_baz/巴茲蝙蝠的調用將分發到爲Bar_BazController :: bazBatAction() Bar/BazController.php中(注意路徑分離)和渲染酒吧/巴茲/ 巴茲 - bat.phtml。 請注意,在第二個示例中,模塊仍然是默認模塊,但由於存在路徑分隔符,控制器會在Bar/BazController.php中接收名稱Bar_BazController。 ViewRenderer模仿控制器目錄層次結構。

所以,從那custom-search.phtml是正確的名稱。現在,您可能在存儲它的目錄中存在錯誤,控制器名稱(和模塊)是什麼?檢查你的腳本是否可以被apache讀取。

編輯

在ContextSwitch裏使用的情況下:

  • 初始化是:$contextSwitch->addActionContext('custom-search', 'xml');
  • 視圖腳本是custom-search.xml.phtml

只是測試它在ZF 1.6 (舊的,但應該仍然有效)。所以也許你的初始化是錯誤的(使用'customSearch'而不是'custom-search'?)。

+0

感謝您的回覆。我也期待custom-search.phtml的工作。請參閱編輯的問題。基本上,我正在使用「contextSwitch」操作助手。這會影響正常行爲嗎?該模塊和操作正在得到妥善解決。所以,我希望custom-search.xml.phtml能夠被渲染,而不會發生。 – krishna

+0

@krishna:回答更新 – regilero

+0

完美。你的建議做到了。非常感謝。 – krishna