Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

¿Cómo incluir css/js en Twig utilizando Silex?

21 de junio de 2016

Hola me gustaría saber cómo puedo incluir mis CSS y JS en Twig utilizando el microframework Silex. He encontrado varias opciones. Con asset() al parecer solo sirve para Symfony. Carga la plantilla pero no el css ni js.

Esta son las opciones que he probado {{ app.request.basepath }}, src="js/bootstrap.js" y asset(). Ninguna me funciona. los directorios de mi app son:

/views
     index.twig
     /css
         estilosEvi.css

Agradezco vuestra ayuda.

<!-- Bootstrap -->
        {% block stylesheets %}
       <link href="{{ app.request.basepath }}/css/bootstrap.css" rel="stylesheet">
        <link href="{{ app.request.basepath }}/css/estilosEVI.css" rel="stylesheet" type="text/css">
    {% endblock %}
        {% block javascripts %}
        <script src="js/bootstrap.js"></script>
                  <script src="js/jquery-1.11.3.min.js"></script>
 
        <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
        <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
        <!--[if lt IE 9]>
 
                <script src="{{ 'https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js'}}"></script>
                  <script src="{{ 'https://oss.maxcdn.com/respond/1.4.2/respond.min.js'}}"></script>
                 <![endif]-->
    {% endblock %}

Respuestas

#1

Efectivamente la función asset() solo funciona por defecto en Symfony. En Silex tendrías que añadir tu misma esa función tal y como se explica al final de este artículo.

Mi recomendación sería que movieras los archivos CSS al directorio público de la aplicación:

/views
    index.twig
    ...
/web
    /css
        estilosEvi.css

Y así ya puedes utilizar lo siguiente en tus plantillas:

<link href="{{ app.request.basepath }}/css/bootstrap.css" rel="stylesheet">
<link href="{{ app.request.basepath }}/css/estilosEVI.css" rel="stylesheet" type="text/css">

@javiereguiluz

21 junio 2016, 12:49
#2

Corrijo la respuesta de @javiereguiluz por que la actualizacion de Silex a 2.0 ha variado los enlaces

Para Silex 1.3 el enlace correcto es Managing Assets in Templates

Para Silex 2.0 ya esta disponible el Provider Asset

Un saludo

@antoniogarcia78

4 marzo 2017, 19:38