Bootstrap
Comment installer Bootstrap dans un projet Symfony
Qu'est-ce que Bootstrap ?
Bootstrap est un framework CSS open-source très populaire qui permet de créer rapidement des interfaces responsives et modernes, grâce à un système de grille puissant et une large collection de composants prêts à l'emploi.
Comment l'installer dans Symfony ?
Par défaut, Symfony charge déjà :
app.js- qui importe
app.css - puis ce bundle est injecté dans
base.html.twigvia{{ importmap('app') }}
Pour utiliser Bootstrap, nous avons 2 options :
- soit charger Bootstrap par CDN dans
base.html.twig - soit l'intégrer dans
app.css
Option 1 — Charger Bootstrap par CDN
La méthode la plus simple et la plus rapide : charger Bootstrap par CDN directement dans le fichier de base de nos templates Twig.
Pour récupérer les liens CDN de Bootstrap, consulter la documentation officielle : https://getbootstrap.com/docs/5.3/getting-started/introduction/#cdn-links
Bootstrap nécessite 2 ressources : une feuille de styles CSS et un fichier JavaScript.
Il faut ajouter les 2 dans base.html.twig :
{% block stylesheets %}
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@5/dist/css/bootstrap.min.css"
>
{% endblock %}
{% block javascripts %}
{% block importmap %}{{ importmap('app') }}{% endblock %}
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5/dist/js/bootstrap.bundle.min.js"
defer
></script>
{% endblock %}
Exemple complet
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{% block title %}Welcome!{% endblock %}</title>
{% block stylesheets %}
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@5/dist/css/bootstrap.min.css"
>
{% endblock %}
{% block javascripts %}
{% block importmap %}{{ importmap('app') }}{% endblock %}
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5/dist/js/bootstrap.bundle.min.js"
defer
></script>
{% endblock %}
</head>
<body>
{% block body %}{% endblock %}
</body>
</html>
La balise <meta name="viewport"> est recommandée avec Bootstrap pour garantir un bon comportement responsive sur mobile.
Avantages
- ultra simple
- pas besoin d'installation supplémentaire
- parfait pour tester rapidement
Inconvénient
- dépend d'un CDN externe
Option 2 — Intégrer Bootstrap dans app.css
Cette méthode est plus propre car elle centralise tout le style dans
app.csset évite de dépendre d'un CDN externe.
Dans app.css :
@import url('https://cdn.jsdelivr.net/npm/bootstrap@5/dist/css/bootstrap.min.css');
body {
background-color: #f8f9fa;
}
Ici :
- Bootstrap est chargé en premier
- notre CSS vient ensuite et peut le surcharger
Quand choisir cette option ?
Si nous voulons garder tout notre style centralisé dans app.css.
Comment utiliser Bootstrap dans un template
Bootstrap repose sur des classes CSS à appliquer sur les balises HTML.
Par exemple dans index.html.twig :
{% extends 'base.html.twig' %}
{% block title %}Accueil{% endblock %}
{% block body %}
<div class="container mt-4">
<h1>Bienvenue</h1>
<p class="lead">Cette page utilise Bootstrap dans Symfony.</p>
<form>
<div class="mb-3">
<label for="name" class="form-label">Nom</label>
<input
type="text"
id="name"
name="name"
class="form-control"
placeholder="Votre nom"
>
</div>
<button type="submit" class="btn btn-primary">Envoyer</button>
</form>
</div>
{% endblock %}
Contrairement à Pico.css, Bootstrap ne stylise pas les balises HTML nativement : il faut ajouter des classes CSS explicitement.
Voici les classes les plus courantes :
containeroucontainer-fluid— pour centrer et encadrer le contenumt-4,mb-3,p-2— pour les marges et paddings (système d'espacement)form-label,form-control— pour styliser les formulairesbtn,btn-primary,btn-danger... — pour les boutonsrow,col-md-6— pour le système de grille responsive
Remarques
Notre app.css contient actuellement :
body {
background-color: skyblue;
}
Avec Bootstrap, ce fond bleu entrera en conflit avec le style par défaut. Il vaut mieux le remplacer par quelque chose de plus neutre, par exemple :
.container {
margin-top: 2rem;
}