php – Slim Framework – >创建XML输出

如何创建一个为RSS流输出真实XML内容的视图.我正在使用SLIM,TWIG与巴黎和Idiorm结合进行模板化.

就像是 :

$app -> get('/rss/', function() use ($app) {
$articles = Model::factory('Article') -> order_by_desc('timestamp') -> find_many();
return $app -> render('rss.xml', array('articles' => $articles));
});

使用此Template layout.xml:

<?xml version="1.0" encoding="UTF-8"?>
{% block content %} {% endblock %}

这个特殊的路线RSS模板:

{% extends 'layout.xml' %}
{% block content %}     
<blog_content>
{% for article in articles %}
<article>
<article_id>{{ article.id }}</article_id>
<article_headline>{{ article.title }}</article_headline>
<article_author>{{ article.author }}</article_author>
<article_timestamp>{{ article.timestamp }}</article_timestamp>
<article_summary>{{ article.summary }}</article_summary>
<article_link>http://slim.phaziz.com/article/{{ article.id }}/</article_link>
</article>
{% endfor %}
</blog_content>
{% endblock %}

将显示为HTML Doument,其中包含模板作为正文文本…
标头始终以xHTML而非XML格式发送

???

Thanx帮忙!

解决方法:

更新:这个答案在Slim版本3中不再适用.

您必须在/ rss / route中覆盖对text / xml的响应的Content-Type HTTP标头:

$app -> get('/rss/', function() use ($app) {
  $articles = Model::factory('Article') -> order_by_desc('timestamp') -> find_many();

  $app->response->headers->set('Content-Type', 'text/xml')

  return $app -> render('rss.xml', array('articles' => $articles));
});

http://docs.slimframework.com/response/headers/

编辑:如果生成的XML是100%RSS,请改用application / rss xml content-type.

上一篇:php – 用作曲家安装Slim3 beta?


下一篇:php – 没有在Slim框架上工作的路由