2012-03-02 35 views
4

如何创建一个视图,用于输出的RSS流真正的XML内容。我将SLIM,TWIG用于与巴黎和Idiorm相结合的模板。超薄框架 - >创建XML输出

喜欢的东西:

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

有了这个模板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,包含模板作为正文文本... 标题始终以xHTM形式发送L不XML

???

thanx的帮助!

+0

由于标题不被设置为内容类型的XML。这是http://www.slimframework.com/read/automatically-parse-an-http-request-by-content-type有帮助吗? – Flukey 2012-03-02 14:28:18

+0

不,它没有:-(。我认为它是一个问题,我用作Templating Machine的Twig。当我检查Browseroutput中的源代码时,XML在HTML-Body内呈现...... – Superpupsi 2012-03-05 14:29:04

回答

5

更新:这个答案是否定的更适用于修身版3


你要响应的Content-Type HTTP标题改写为text/xml/rss/路线:

$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内容类型。