Assets
Comment sont gérés les fichier JS et CSS dans Symfony ?
Mise en place de Webpack/Encore pour gérer les fichiers JS et CSS. C'est un module Symfony qui utilise Webpack.
Pour compiler les fichiers, il faut lancer la commande suivante :
yarn encore dev --watch
Javascript
Librairies utilisées
Zepto (jQuery-like light)
J'utilise la librairie Zepto qui est un jQuery très léger. Pour l'installer, il faut un package spécifique pour Webpack (webpack-zepto) :
yarn add webpack-zepto --dev
jQuery
Finalement, pour utiliser Select2 par exemple, il faut jQuery…
yarn add jquery
JSRouting
Le bundle FOSJsRoutingBundle permet d'utiliser les routes déclarées dans les controllers Symfony directement dans les fichiers Javascript.
Par contre, lorsqu'on rajoute une route, il ne faut pas oublier de lancer la commande suivante pour exporter les routes dans un fichier JSON :
bin/console fos:js-routing:dump --format=json --target=public/js/fos_js_routes.json
Ce fichier est ensuite utilisé dans le fichier Javascript via les lignes suivantes :
import Routing from '../../vendor/friendsofsymfony/jsrouting-bundle/Resources/public/js/router.min.js';
const routes = require('../../public/js/fos_js_routes.json');
# Génération d'une route
Routing.setRoutingData(routes);
CKEditor
Pour le WYSIWYG des textes, j'utilise la librairie CKEditor. Pour le mettre en place :
# Installer le bundle
composer require friendsofsymfony/ckeditor-bundle
# Ajouter à Webpack/Encore
yarn add ckeditor@^4.0.0
Il est possible de créer des plugins pour CKEditor, pour ajouter de nouvelles fonctionnalités (comme l'intégration de champs personnalisés dans le contenu).
CSS
Les fichiers CSS sont générés via Sass. Pour cela, il faut installer les modules correspondants via la commande :
yarn add sass-loader@^7.0.1 node-sass --dev
Icônes
Les icônes de la plateforme sont fournies par Font Awesome.
Pour utiliser la librairie, il faut l'ajouter au projet :
yarn add @fortawesome/fontawesome-free
Puis, il faut mettre les lignes suivantes dans le fichier app.js
:
require('@fortawesome/fontawesome-free/css/all.min.css');
require('@fortawesome/fontawesome-free/js/all.js');
Intégration dans une page
Il est possible de déclarer un fichier Javascript spécifique à une page. Pour cela, il faut définir une "entry" dans le fichier de configuration de Webpack :
.addEntry('ma_page', './assets/js/ma_page.js')
Puis utiliser le nom de cette entrée dans la page désirée :
{{ encore_entry_script_tags('ma_page') }}
Il est aussi possible de faire ça avec un fichier CSS en utilisant la fonction encore_entry_link_tags('ma_page')
.
Mis à jour