Pregunta

Actualmente estoy escribiendo algunas extensiones en Twig, pero tengo problemas para decidir por qué una cierta extensión debe implementarse como una etiqueta o una función.

Leña menuda documentación Enumera las siguientes 2 construcciones y lo que hacen:

  • {{ }}: utilizado para imprimir el resultado de una evaluación de expresión;
  • {% %}: Se utiliza para ejecutar declaraciones.

Estoy planeando implementar algo similar a Symfony2 controladores integrados.

¿Por qué es que la función se implementa como:

{% render "AcmeDemoBundle:Demo:fancy" with { 'name': name, 'color': 'green' } %}

Dado que la función de controladores integrados debe devolver una plantilla completamente renderizada para el controlador solicitado, ¿no sería una función más apropiada?

render("AcmeDemoBundle:Demo:fancy", { 'name': name, 'color': 'green' });
¿Fue útil?

Solución

Estaba interesado en la misma pregunta. Depende de ti decidir.

Si utiliza {{ }} Podrá aplicar filtros a la salida: {{ render()|upper }}. Si utiliza {% %} La salida de su extensión no se "desinfectará" (pero siempre puede usar {{ }} con array('is_safe' => array('all')).

render es una construcción importante. No es solo una función como {{ path() }} que puedes llamar a una expresión: {{ host ~ path() }}.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top