如何回显sitemap.xml Cakephp3.1

时间:2016-02-14 11:19:00

标签: php cakephp mime-types cakephp-3.0 sitemap

我在sitemapxml.xml中设置mime类型时遇到问题。我找到了this,但它没有效果:

$this->RequestHandler->respondAs('xml');
$this->response->header(['Content-type' => 'application/xml']);

我还尝试在sitemap.ctp视图的开头添加header('Content-type:text/xml')

2 个答案:

答案 0 :(得分:0)

查看迁移指南:

  

RequestHandlerComponent现在根据已分析的扩展程序或Accept回调中的beforeRender()标题而不是startup()来切换布局和模板。

<强> Cookbook > Appendices > 3.1 Migration Guide > RequestHandlerComponent

因此,这意味着您在控制器操作运行后以及呈现视图之前将覆盖您在那里设置的内容(无论在何处,但肯定不在Controller::beforeRender()回调中)。

有多种方法可以解决这个问题。

  1. 正确使用请求处理程序组件,即启用扩展程序解析并在URL中提供扩展程序,或发送正确的Accept标头。这样组件将设置正确的响应类型。

    这是推荐的方式!

    另请参阅 Cookbook > Views > JSON and XML views

  2. 设置在呈现前正在评估的RequestHandlerComponent::$ext属性,并使请求处理程序组件相应地设置响应类型,

    $this->RequestHandler->ext = 'xml';
    
  3. 使用RequestHandlerComponent::renderAs()指示请求处理程序组件使用配置的XML视图,该视图将覆盖beforeRender()回调中设置的“错误”类型。

    $this->RequestHandler->renderAs($this, 'xml');
    
  4. 不要使用请求处理程序组件并直接在响应对象上设置响应类型。

    $this->response->type('xml');
    

答案 1 :(得分:0)

Intersting,我看到$this->response->type有效 只有直接设置$this->render('view');