2012-04-18 142 views
0

我遵循this website上的教程,它解釋瞭如何使用cakePHP設置REST,但是當我完成所有這些工作後,當我在瀏覽器中調用控制器時(例如,我有一個PostsController,它具有默認的CRUD行動),我仍然得到HTML作爲我的迴應(不是XML)。看起來好像正在調用的視圖文件是app/views/posts/index.ctp中的視圖文件,而不是我放置在app/views/posts/xml/index.ctp中的視圖文件。CakePHP中的REST風格的Web服務

有誰能告訴我我還錯過了什麼嗎?

謝謝

+0

您調用了哪個URL? – Costa 2012-04-19 06:17:18

+0

http:// localhost/my_application/my_controller/my_action – user765368 2012-04-19 14:52:05

+1

我想我會花更少的諷刺海報來度過我的時間。 – Costa 2012-04-19 17:24:11

回答

0

您是否創建了xml佈局?您可能需要創建一個空白布局,並在視圖中將佈局設置爲xml佈局。

+0

是的,我創建了一個XML佈局 – user765368 2012-04-19 14:50:20

0

嘗試把這樣的事情在你的控制器功能(甚至更好的beforeFiler):

if(@($this->request->isXML() || $this->request->params['ext'] == 'xml')) { 
    $this->RequestHandler->respondAs('xml'); 
} 

另外,還要確保在配置/ routes.php文件是

Router::parseExtensions('xml'); 
+0

不工作! – user765368 2012-04-19 14:51:19

+0

你是否在你的url結尾放了一個.xml文件? – dubvfan87 2012-04-21 20:43:05

3

CakePHP的是什麼版本你正在用嗎?如果您使用的是2.x版本,解決方案非常簡單。

  1. 確保您有這條線在你的控制器

    public $components = array('RequestHandler'); 
    
  2. 進入您的應用程序/配置/ routes.php文件,並與require CAKE . 'Config' . DS . 'routes.php';添加以下行前行:

    Router::mapResources('examples'); 
    Router::parseExtensions('xml'); 
    

    其中的例子基本上就是您的視圖名稱。

  3. 請務必使用xml擴展名輸入您的網址。

    url/controller.xml 
    

這應該做的伎倆。包括RequestHandler組件,當「與Router :: parseExtensions()RequestHandler結合使用時,將自動將佈局和視圖文件切換爲與請求類型匹配的文件」