Bootstrap est un Framework CSS qui permet de faire rapidement un design de son application Web. Dans cette procédure, je vais vous montrer comment importer Bootstrap en Sass dans son projet Symfony 6 à l’aide de NPM (Node Package Manager).
Prérequis :
- Symfony 6 d’installé sur sa machine (Installer Symfony 6 sur Debian 11)
- Npm d’installer sur sa machine (Installer Npm avec Debian 11)
- Composer sur sa machine (Installer Composer sur Debian 11)
Importer Bootstrap dans Symfony 6 en SCSS :
Pour importer Bootstrap dans Symfony 6 nous allons utiliser Npm, assurez-vous de l’avoir installé avant de suivre la procédure.
Commençons par créer un nouveau projet Symfony 6 à l’aide de la CLI Symfony :
symfony new --webapp nom_projet
Puis on se rends dans le dossier du projet :
cd nom_projet
Ensuite on va va importer webpack dans le projet Symfony :
composer require symfony/webpack-encore-bundle
Puis on installe les dépendances de Webpack avec Npm :
npm install
Renommer le fichier app.css dans le dossier assets/styles/ en app.scss
Modifier dans le fichier app.js :
import './styles/app.css';
# Par
import './styles/app.scss';
Allez dans le fichier webpack.config.js à la racine du projet Symfony puis enlevez « // » avant .enableSassLoader() pour activer le SassLoader
Puis installer le SassLoader avec npm :
npm install sass-loader node-sass --save-dev
Puis modifier comme ci-dessous le fichier template de twig à l’emplacement templates/base.html.twig :
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{% block title %}Welcome!{% endblock %}</title>
{% block stylesheets %}{{ encore_entry_link_tags('app') }}{% endblock %}
</head>
<body>
{% block body %}{% endblock %}
{% block javascripts %}{{ encore_entry_script_tags('app') }}{% endblock %}
</body>
</html>
Ensuite on peut vérifier de l’état du projet à l’aide du compilation :
npm run build
Ensuite on peut installer Bootstrap dans le projet Symfony avec Npm :
npm install bootstrap
Enfin modifier encore le fichier app.js comme ci-dessous :
/*
* Welcome to your app's main JavaScript file!
*
* We recommend including the built version of this JavaScript file
* (and its CSS file) in your base layout (base.html.twig).
*/
// any CSS you import will output into a single css file (app.css in this case)
import './styles/app.scss';
// You can specify which plugins you need
import { Tooltip, Toast, Popover } from 'bootstrap';
// start the Stimulus application
import './bootstrap';
Nous allons ensuite créer un fichier scss personnalisé que nous allons placé dans le dossier /assets/style que nous allons appeler custom.scss
Ensuite on va modifier le structure du fichier app.scss comme ci-dessous :
@import "custom";
@import "~bootstrap/scss/bootstrap";
body {
background-color: lightgray;
}
Puis on peut refaire un build :
npm run build
Enfin on peut faire un controller de test pour vérifier que Bootstrap fonctionne :
symfony console make:controller Test
Modifier une page du nouveau Controller avec du Bootstrap dedans (exemple le fichier templates/test/index.html.twig):
{% extends 'base.html.twig' %}
{% block title %}Hello TestController!{% endblock %}
{% block body %}
<div class="container-fluid">
<div class="row">
<div class="col-4"></div>
<div class="col-4">
<h1 class="text-center my-4">Test de Bootstrap</h1>
<a href="" class="btn btn-primary">test</a>
</div>
<div class="col-4"></div>
</div>
</div>
{% endblock %}
Démarrer le serveur web et connecter vous sur le projet :
symfony serve -d
Votre page doit ressembler à l’image si Bootstrap c’est bien importé :
Vous pouvez également changer les couleurs de Bootstrap dans le fichier custom.scss présent dans le dossier assets/styles/ avec la structure suivante :
$primary: #F9070B;
Et ensuite n’oubliez pas de recompiler :
npm run build
Il est aussi possible de mettre automatiquement les formulaires sous le thème de Bootstrap, ajoutez dans le fichier config/packages/twig.yaml :
twig:
form_themes: ['bootstrap_5_layout.html.twig']
Importer Bootstrap avec un CDN dans son projet Symfony 6 :
Pour importer Bootstrap à l’aide d’un CDN dans son projet Symfony 6, il s’agit d’une manière plus classique ou il suffit d’ajouté la balise suivant entre les balise head dans le fichier base.html.twig :
<head>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
Sources :
Webpack : https://webpack.js.org/concepts/
Symfony : https://symfony.com/doc/current/index.html
Bootstrap : https://getbootstrap.com/docs/5.1/getting-started/introduction/