2012-03-02 113 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內容類型。