¿Cómo guardar dinámicamente todas las rutas .css y luego pasarlas a assetic para su compresión? (en Symfony 2)

Estoy teniendo dificultades para lidiar con hojas de estilo y javascripts.

Todos los ejemplos de assetic + twig asumen que conoce de antemano todas las rutas de los archivos que necesitará.

Supongamos que quiero crear una página "Acerca de".

La plantilla 'about.html.twig' se extiende desde 'layout.html.twig'.

El diseño debe tener un par de .css y .js que se utilizarán en todo el sitio.

La plantilla about debe cargar otros archivos .css y .js que sean específicos para ella.

Entonces, el bloque de hojas de estilo se parece a esto:

{% block stylesheets %}
{{ parent() }}
<link href='bla'> {# more stylesheets #}
{% endblock %}

Entonces, ¿cómo uso assetic en este caso?

¿Se supone que debo enviar todos los activos del sitio desde el principio, porque incluso entonces, se mejorará el rendimiento?

El problema es que puede haber conflictos entre el .css, a veces carga un .css solo para anular su propia configuración base, por lo que no puede crear un solo .css para todo el sitio.

También intenté configurar una matriz para almacenar todas las rutas, luego hacer un bucle y pasar las rutas a assetic. Pero parece que la sintaxis css [] = 'another_path.css' no es compatible con twig. Tienes que configurar toda la matriz en una asignación

preguntado el 30 de junio de 11 a las 19:06

1 Respuestas

Sí, está correcta la sintaxis de las extensiones assetic Twig, espera que conozca todos los activos que desea incluir. Pero eso es por diseño porque para la producción se pretende que elimine el CSS / JS combinado y minificado para que pueda manejarlo el servidor web sin involucrar a PHP.

Mi mejor sugerencia para usted es identificar todas sus hojas de estilo que está feliz de incluir en todas las páginas de su sitio y hacer una solicitud de hoja de estilo assetic para ellas.

Luego, para páginas específicas en las que necesite hojas de estilo adicionales, puede realizar una segunda llamada de asesoría cuando sea necesario.

diseño.html.ramita

// do common styles
{% stylesheets 'css/reset.css'
               'css/960.css'
               'css/foobar.css'
               filter='yui_css' %}
    <link rel="stylesheet" media="screen" href="{{ asset_url }}" />
{% endstylesheets %}

// use an empty block for extra styles
{% block extra_styles %}{% endblock %} 

someview.html.ramita

{% block extra_styles %}
    {% stylesheets 'css/about1.css'
                   'css/about2.css'
                   filter='yui_css' %}
        <link rel="stylesheet" media="screen" href="{{ asset_url }}" />
    {% endstylesheets %}
{% endblock %}

Otra solución, que posiblemente sea más fácil, es simplemente refactorizar su CSS para que pueda descargar todos los estilos de una sola vez.

Respondido 01 Jul 11, 12:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.