我在sitemapxml.xml
中设置mime类型时遇到问题。我找到了this,但它没有效果:
$this->RequestHandler->respondAs('xml');
$this->response->header(['Content-type' => 'application/xml']);
我还尝试在sitemap.ctp视图的开头添加header('Content-type:text/xml')
。
答案 0 :(得分:0)
查看迁移指南:
RequestHandlerComponent
现在根据已分析的扩展程序或Accept
回调中的beforeRender()
标题而不是startup()
来切换布局和模板。
<强> Cookbook > Appendices > 3.1 Migration Guide > RequestHandlerComponent 强>
因此,这意味着您在控制器操作运行后以及呈现视图之前将覆盖您在那里设置的内容(无论在何处,但肯定不在Controller::beforeRender()
回调中)。
有多种方法可以解决这个问题。
正确使用请求处理程序组件,即启用扩展程序解析并在URL中提供扩展程序,或发送正确的Accept
标头。这样组件将设置正确的响应类型。
这是推荐的方式!
设置在呈现前正在评估的RequestHandlerComponent::$ext
属性,并使请求处理程序组件相应地设置响应类型,
$this->RequestHandler->ext = 'xml';
使用RequestHandlerComponent::renderAs()
指示请求处理程序组件使用配置的XML视图,该视图将覆盖beforeRender()
回调中设置的“错误”类型。
$this->RequestHandler->renderAs($this, 'xml');
不要使用请求处理程序组件并直接在响应对象上设置响应类型。
$this->response->type('xml');
答案 1 :(得分:0)
Intersting,我看到$this->response->type
有效
只有直接设置$this->render('view');