My TWIGのように各スライドのこのレンダリングを行う代わりに、次のようにします(6行目を参照):
{# loop out the slides #}
{% for c in contents %}
{% set i=i+1 %} {# increase slide number #}
<div id="slide{{ i }}" class="slide" style="z-index:{{ i }};">
{# the slide itself, rendered by it's own template #}
{% include 'BizTVArchiveBundle:ContentTemplate:'~c.template~'/view.html.twig' with {'contents': c, 'ordernumber': i} %}
</div>
{% endfor %}
...代わりに、そのロジックをすべてコントローラーに保持して、準備が整ったスライドの配列をビューに提供したいだけです。どうすればこのようなことができますか(9行目を参照):
//do stuff...
foreach ($container->getContent() as $c) {
$content[$i]['title'] = $c->getTitle();
$content[$i]['sort'] = $c->getSortOrder();
$content[$i]['data'] = $c->getData();
$content[$i]['template'] = $c->getTemplate()->getId();
$content[$i]['duration'] = $this->extract_seconds($c);
$content[$i]['html'] = $this->render('BizTVArchiveBundle:ContentTemplate:'.$content[$i]['template'].'/view.html.twig', array(
'contents'=> $content[$i],
'ordernumber' => 99,
));
}
現時点で提供されているのは($ content [$ i] ['html']の内容)だけです
{"headers":{}}
次のようなレンダリングされたオブジェクトからコンテンツを取得できます。
$this->render('BizTVArchiveBundle:ContentTemplate:Some.html.twig', array())->getContent();
twigテンプレート内で、次のように出力変数の値を設定できます。
{% set rendered %}
{{ var_to_print }}
{% endset %}
$this->render()
がResponse
オブジェクトを返すためです。 $this->render()
の代わりに、$this->renderView()
を使用します。