This article explains how to install and integrate the Bootstrap CSS framework
in your Symfony application using :doc:`Webpack Encore </frontend>`.
First, to be able to customize things further, we'll install bootstrap
:
$ yarn add bootstrap --dev
Now that bootstrap
lives in your node_modules/
directory, you can
import it from any Sass or JavaScript file. For example, if you already have
a global.scss
file, import it from there:
// assets/styles/global.scss
// customize some Bootstrap variables
$primary: darken(#428bca, 20%);
// the ~ allows you to reference things in node_modules
@import "~bootstrap/scss/bootstrap";
That's it! This imports the node_modules/bootstrap/scss/bootstrap.scss
file into global.scss
. You can even customize the Bootstrap variables first!
Tip
If you don't need all of Bootstrap's features, you can include specific files
in the bootstrap
directory instead - e.g. ~bootstrap/scss/alert
.
Bootstrap JavaScript requires jQuery and Popper.js, so make sure you have this installed:
$ yarn add jquery popper.js --dev
Now, require bootstrap from any of your JavaScript files:
// app.js
const $ = require('jquery');
// this "modifies" the jquery module: adding behavior to it
// the bootstrap module doesn't export/return anything
require('bootstrap');
// or you can include specific pieces
// require('bootstrap/js/dist/tooltip');
// require('bootstrap/js/dist/popover');
$(document).ready(function() {
$('[data-toggle="popover"]').popover();
});
If you need to use jQuery plugins that work well with jQuery, you may need to use Encore's :ref:`autoProvidejQuery() <encore-autoprovide-jquery>` method so that these plugins know where to find jQuery. Then, you can include the needed JavaScript and CSS like normal:
// ...
// require the JavaScript
require('bootstrap-star-rating');
// require 2 CSS files needed
require('bootstrap-star-rating/css/star-rating.css');
require('bootstrap-star-rating/themes/krajee-svg/theme.css');