Twig: Nombres de bloques dinámicos

Creado en 12 abr. 2011  ·  7Comentarios  ·  Fuente: twigphp/Twig

El uso de vars para nombres de bloques no funciona.

{% set block_name = "my_block_name"%}

{% block block_name%}
algo de html ...
{% endblock%}

Comentario más útil

Los nombres de los bloques forman parte de la estructura de la plantilla, por lo que deben conocerse en el momento de la compilación.
Las variables solo se conocen en tiempo de ejecución.

Todos 7 comentarios

porque block_name representado como cadena 'block_name'

Lo siento, ¿estás diciendo que no puedes tener bloques dinámicos con twig o que lo estoy usando de manera incorrecta?

Tienes razón, no hay nombres de bloques dinámicos

No puede utilizar bloques dinámicos. Publique su caso de uso en la lista de correo de usuarios de Twig.

Perdón por abrir un estuche frío ^^. Creo que me he encontrado con un caso de uso que se beneficiaría de los nombres de bloques dinámicos ...

Utilizo Doctrine con herencia de tabla única (clase abstracta base = Artículo, y Noticias + Preguntas frecuentes amplían el artículo).

Luego, he creado clases de formularios para poder crear News y Faq. Pero todas las formas usan la misma plantilla de ramitas. Luego necesitaba personalizar una plantilla de campo (digamos artículo.producto) como se describe aquí .

El problema es que el nombre del campo cambia según el formulario que se utilice. El nombre será news_product o faq_product, por lo que sería útil poder personalizar los campos de mi formulario de esta manera para evitar repeticiones:

{%- block '_'~type~'_product_widget' -%} ... {% endblock %}

Después de investigar un poco, resolví esto forzando el prefijo del formulario en las diferentes clases de tipo de formulario usando getBlockPrefix, de modo que todos los formularios tendrán los mismos nombres de campo, y simplemente puedo personalizar article_product:

public function getBlockPrefix(){ return 'article'; }

Así que solo quería documentar este caso de uso que puede ayudar a alguien ...

Los nombres de los bloques forman parte de la estructura de la plantilla, por lo que deben conocerse en el momento de la compilación.
Las variables solo se conocen en tiempo de ejecución.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

mpdude picture mpdude  ·  3Comentarios

garak picture garak  ·  5Comentarios

Seldaek picture Seldaek  ·  6Comentarios

mmarton picture mmarton  ·  4Comentarios

koflerdavid picture koflerdavid  ·  3Comentarios