2011-07-21 5 views
6

Quiero incrustar diferentes archivos de Stylesheet con assetic en una plantilla twig de un proyecto Symfony2. La hoja de estilo utilizada depende de la configuración del tema del usuario.Cómo incrustar hojas de estilo con Assetic en función de un valor en la sesión

que utilizan

{% stylesheets 
     '@CuteFlowCoreBundle/Resources/public/css/application.css' 
     '@CuteFlowCoreBundle/Resources/public/css/theme/'~app.session.get('cuteflow_theme')~'/application.css' 
%} 
    <link rel="stylesheet" href="{{ asset_url }}" type="text/css" media="all" /> 
{% endstylesheets %} 

Pero esto genera un error:

Unexpected token "operator" of value "~" in "CoreBundle::layout.html.twig" 

He intentado lo siguiente también. Pero esto tampoco ayudó.

{% set theme = '@CuteFlowCoreBundle/Resources/public/css/theme/'~app.session.get('cuteflow_theme')~'/application.css' %} 
{% stylesheets 
     '@CuteFlowCoreBundle/Resources/public/css/application.css' 
     theme 
%} 
    <link rel="stylesheet" href="{{ asset_url }}" type="text/css" media="all" /> 
{% endstylesheets %} 

¿Alguna idea de cómo se puede hacer esto?

+0

Si no se puede conseguir Para que funcione en ramita, trataría de registrar los activos en el código de su controlador. No es tan bonito, pero debería funcionar. – Problematic

Respuesta

10

La respuesta es simple: no puede hacerlo.

Assetic iterará sus plantillas y generará todos los archivos desde {% stylesheets %} bloques.

Si utiliza una variable (sesión por ejemplo), Assetic no puede "adivinar" todos los valores posibles.

usted tiene 2 posibilidades:

  • separada 2 llamadas CSS (1 para la llamada común, 1 para CSS tema dedicado) - tiene más sentido para mí
  • Crear 1 CSS, por tema

independiente 2 CSS llama

{% stylesheets "A.css" "B.css" %} ... {% endstylesheets %} 
<link rel="stylesheet" href="{{ asset("css/" ~ theme ~ ".css") }}" /> 

Crear 1 CSS, por tema

Si desea crear un tema para cada tema disponible, para hacer que sea sencillo, hay que hacerlo de forma manual:

{% if theme == "XXX" %} 
    {%stylesheets "A.css" "XXX.css" %} ... {% endstylesheets %} 
{% elseif theme == "YYY" %} 
    {%stylesheets "A.css" "YYY.css" %} ... {% endstylesheets %} 
{% endif %} 
Cuestiones relacionadas