2011-12-13 56 views
0

我正在使用CakePHP 2.0(我相信它是v2.0.3)和PHP 5.3.8。使用Cake w/url擴展

我正在研究一個利用Cake對URL擴展的支持的應用程序。具體來說,每當URL請求以.xml擴展名結尾時,我就會輸出XML。如果網址請求沒有任何擴展名,那麼我的應用程序會顯示標準視圖。這一切精美的作品 -

request .../controller/action.xml renders via view/controller/xml/action.ctp while request .../controller/action renders via view/controller/action.ctp. 

要做到這一點,我做了以下內容:

1. Added support for url extension; added the following line to route.php -- Router::parseExtensions('xml'); 
2. Added support request handling; added the following line to MyController.php -- public $components = array('Session', 'RequestHandler'); 

輸出XML,我使用Cake的 'XML' 類結合PHP的 '的SimpleXMLElement' 類。我的問題是,從來沒有生成完整的XML。這些類假設是基於輸入的PHP數組生成xml,但是看起來整個數組沒有被處理。我的xml輸出是部分的。

在我看來文件(.ctp)我的源代碼如下:

$ simple_xml_elem = XML ::編譯($ xml_array); echo $ simple_xml_elem-> asXML();

有趣的是,在試圖調試這個問題的過程中,我發現了類似的行爲可以觀察到,如果我簡單地嘗試轉儲視圖對象內的XML視圖文件(../view/controller/xml/action .ctp)。 'var_dump($ this)'只輸出視圖的部分轉儲。在標準視圖文件(../view/controller/action.ctp)中執行相同的視圖轉儲會輸出視圖的完整轉儲。

這是我相信,Cake是以某種方式設置視圖環境時不同,當它路由的URL擴展比標準視圖請求。

在我失去理髮之前,有人能爲我解釋一下嗎?請????謝謝!

回答