Bonjour,
j'essaie d'intaller unbon environnement de développement (symfony) mais impossible de comprendre l'histoire des assets.
Même avec la doc officielle, je ne trouve pas cela clair.
Je suis pouvoir utiliser symfony 4.2 avec du css et du javascript (jquery).
Je tombe sur plusieurs tutoriels mais tous disent des choses différentes.
Je souhaite pouvoir utiliser les dernières méthodes mais sans être obliger d'utiliser des technologies "imposées"
Dans la doc officielle il est recommandé d'utiliser "Encore" pour la gestion des assets.
Sauf qu'il est demandé d'installer NodeJs au préalable. Cependant, je ne souhaite pas utiliser Nodejs, mais seulement jquery.
Ensuite, est-il possible de se passer de Encore ?
Faut-il installer "asset" (composer require asset) obligatoirement avec Encore?
Peut-on utiliser uniquement "asset" ?
Pas moyen de trouver une explication claire.
Si vous pouviez m'éclaircir un peu plus ?
En vous remerciant
Jérémie
Hello,
Webpack Encore est un composant proposé par Symfony. Il n'est pas obligatoire, tu peux gérer tes assets par toi même.
Encore permet une configuration rapide et simplifiée de webpack, par exemple pour minifier, compiler du saas, transpiler du js es6, etc.
Pour fonctionner, webpack utilise nodejs comme support. C'est npm qui va gérer les packages, un peu comme composer côté Symfony.
Une fois qu'on a mis un pied dedans, on ne s'en passe plus.
Si tu démarres avec Symfony, et que tu n'est pas super à l'aise avec tout ça, commences sans Webpack, tu pourras y venir plus tard.
Il te suffit donc de placer tes js et css dans le répertoire public et d'y accéder dans twig via la balise {{ asset('path/to/my/asset') }}...
Bonjour Digivia,
merci pour ton explication.
J'ai essayé avec la fonction asset. (symfony require asset)
Dans mon fichier twig :
{% block stylesheets %}
<link rel=¨stylesheet¨ type=¨text/css¨ href=¨{{ asset('css/bootstrap.min.css') }}¨>
{% endblock %}
<body>
{% block body %}
{% endblock %}
{% block javascripts %}
<script src="{{ asset('js/jquery.min.js') }}" type="text/javascript"></script>
<script src="{{ asset('js/bootstrap.min.js') }}" type="text/javascript"></script>
<script src="{{ asset('js/popper.min.js') }}" type="text/javascript"></script>
{% endblock %}
</body>
Avec les fichiers placés dans /public/css et /public/js
Mais je n'ai aucun résultat
Merci
Bonjour.
Tu as déjà un problème d'inversion d'ordre de librairies, soit entre Bootstrap et Popper.
La librairie Popper doit être chargée avant celle de Bootstrap.
Tu devrais d'ailleurs avoir un message d'erreur dans ta console par rapport à ça, si tu utilises un composant de Bootstrap qui a besoin de Popper pour fonctionner.
Soit par exemple :
Bonjour,
merci pour vos réponses.
J'ai bien fait tout ce que vous m'avez indiqué (il me semble), mais toujours aucun résultat.
Voici ce que j'obtiens en visionnant le code source de la page HTML :
<link rel=¨stylesheet¨ type=¨text/css¨ href=¨/css/bootstrap.min.css¨>
<link rel=¨stylesheet¨ type=¨text/css¨ href=¨/css/bootstrap-theme.min.css¨>
Et quand je clique sur un fichier css j'obtiens :
<title> No route found for "GET /%C2%A8/css/bootstrap.min.css%C2%A8" (404 Not Found) </title>
En vous remerciant,
Jérémie
Est-ce que tu as installé asset via Composer ?
Car si tu veux utiliser la fonction asset il te faut installer le package.
Bonjour Lartak,
apparemment il y avait un problème de quotation " dans mon code source.
Maintenant cela fonctionne.
Pour composer, les deux commandes fonctionne également :
composer require asset
composer require symfony/asset
Merci
Jérémie