我按照this website上的教程解释了如何使用cakePHP设置REST,但在我完成所有这些操作后,当我在浏览器中调用我的控制器时(例如我有一个PostsController,其中有默认的CRUD操作) ),我仍然得到html作为我的回应(不是xml)。看起来被调用的视图文件是app/views/posts/index.ctp
中的视图文件,而不是我放在app/views/posts/xml/index.ctp
中的文件。
有人可以告诉我,我在这里还缺少什么吗?
谢谢
答案 0 :(得分:3)
您使用的是哪种版本的cakePHP?如果您使用的是2.x版本,那么解决方案非常简单。
确保在控制器中包含此行
public $components = array('RequestHandler');
进入您的app / Config / routes.php并在require CAKE . 'Config' . DS . 'routes.php';
行前添加以下行:
Router::mapResources('examples');
Router::parseExtensions('xml');
其中示例基本上只是视图的名称。
请务必使用xml扩展名输入您的网址。
url/controller.xml
这应该可以解决问题。包含RequestHandler组件,当“与Router :: parseExtensions()RequestHandler结合使用时,会自动将布局和视图文件切换到与所请求类型匹配的文件”
答案 1 :(得分:0)
您是否创建了xml布局?您可能只需要创建一个空白布局,并在视图中将布局设置为xml布局。
答案 2 :(得分:0)
尝试在控制器功能中添加这样的东西(甚至在beforeFiler中更好):
if(@($this->request->isXML() || $this->request->params['ext'] == 'xml')) {
$this->RequestHandler->respondAs('xml');
}
还要确保在Config / routes.php中
Router::parseExtensions('xml');