2012-03-02 7 views
4

RSSストリームの実際のXMLコンテンツを出力するビューを作成するにはどうしたらいいですか?私はSLIM、TWIGを組み合わせてParisとIdiormのテンプレートに使用しています。スリムフレームワーク - > XML出力の作成

ような何か:このテンプレートlayout.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)); 
}); 

<?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

+0

いいえ、そうではありません:-(私はテンプレートマシンとしてTwigの問題を考えています.Browseroutputでソースコードを調べると、XMLはHTMLボディ内でレンダリングされます... – Superpupsi

答えて

5

更新:この答えはあなたがあなたの/rss/ルートでtext/xmlに対する応答のContent-Type HTTPヘッダーを上書きする必要がスリムバージョンではこれ以上の適用3.


です:

$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/

編集:in場合は、生成されたXMLが100%RSSの場合は、代わりにapplication/rss+xmlコンテンツタイプを使用してください。

関連する問題