php - array - twig table
¿Cómo representar la salida TWIG a una variable para su uso posterior(symfony2)? (4)
Dentro de una plantilla de ramita, puede establecer el valor de una variable impresa así:
{% set rendered %}
{{ var_to_print }}
{% endset %}
En lugar de hacer esta representación de cada diapositiva en mi TWIG de esta manera (vea la línea 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 %}
... En lugar de eso, me gustaría mantener toda esa lógica en el controlador, solo para enviar a la vista una serie de diapositivas listas. ¿Cómo puedo hacer algo como esto (ver línea 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,
));
}
Todo lo que me da en este momento (el contenido de $ content [$ i] [''html'']) es
{"headers":{}}
Es mejor si incluye la plantilla en la plantilla , de esta manera mantendrá la representación de plantillas en la capa de vista y la lógica en la capa del controlador.
Pero bueno, si realmente lo quieres ...
Puedes usar 2 servicios para hacer eso: Twig_Environment
usa Twig_Environment
o Twig_Environment
que es una capa de plantilla de creación en Symfony2 para Twig, esto puede cambiarse fácilmente de templating.engine.php
.
Si usas el servicio de twig
, puedes ver los documentos de la ramita sobre cómo usarlo:
$template = $this->get(''twig'')->render(''/full/path/to/Resources/views/''.$content[$i][''template''].''/view.html.twig'', array(...));
Si usa el servicio templating.engine.twig
, consulte los documentos de plantillas sobre cómo usarlo, que es casi exactamente el mismo que Twig_Environment
.
Esto se debe a que $this->render()
devuelve un objeto de Response
. En lugar de $this->render()
, usa $this->renderView()
.
Puedes obtener contenido de un objeto renderizado como este:
$this->render(''BizTVArchiveBundle:ContentTemplate:Some.html.twig'', array())->getContent();