如何创建一个为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.