templates - asset - symfony twig block
Combinar recursos de Assetic a través de plantillas heredadas (2)
Estamos construyendo un nuevo sitio usando Symfony2, y Assetic parece muy prometedor para la administración de recursos, en particular para combinar y procesar todos los archivos js / css de forma automática.
Tendremos algunos recursos que se usan en todo el sitio, y algunos que son específicos para páginas particulares. También utilizaremos un enfoque heredado de tres niveles para las plantillas.
¿Hay alguna manera de combinar los dos conceptos, es decir, agregar automáticamente recursos adicionales en plantillas heredadas para que todos salgan como un solo recurso?
En realidad puedes hacer lo siguiente:
En layout.html.twig (o cualquiera que sea su diseño)
{% block stylesheets %}
{% stylesheets ''your_assets_here'' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
{% endblock %}
Y en cualquier plantilla que amplíe ese diseño:
{% block stylesheets %}
{{ parent() }}
{% stylesheets ''additional_assets_here'' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
{% endblock %}
Entonces no necesitarías volver a escribir todos los recursos antiguos como lo sugirió Nemanja Niljkovic
Lamentablemente, no puedes :(
No puede anular las etiquetas de activos para agregar más activos. Sin embargo, puede hacer lo siguiente:
{% block stylesheets %}
{% stylesheets ''your_assets_here'' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
{% endblock %}
Luego, cuando extiendes la plantilla:
{% block stylesheets %}
{% stylesheets ''your_old_assets_here'' ''your_new_assets_here'' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
{% endblock %}
En el bloque reemplazado, puede usar parent()
para incluir el bloque padre, pero entonces tendría 2 enlaces: no puede combinar la antigua etiqueta de propiedad con la nueva.
Sin embargo, podría crear una macro de rama que generaría la etiqueta de {% stylesheets%} assetic con sus activos antiguos, y como entrada contendría nuevas ubicaciones de activos.
Más información here .