如何创建一个为RSS Stream输出真实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帮忙!
答案 0 :(得分:5)
更新:这个答案在Slim版本3中不再适用。
您必须在Content-Type
路由中覆盖text/xml
响应的/rss/
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
内容类型。