Uncategorized

How to enable Bootstrap in Symfony 6 project

Bootstrap is the most popular HTML, CSS, and JavaScript framework for developing responsive, mobile-first websites.

Requirements:

    • Symfony 6 version installed on your machine (docker or server);
    • Yarn to install on your device (docker or server);
    • Composer v2 install on your machine (docker or server);

Let’s start by creating a new Symfony 6 project using the Symfony CLI:

symfony new my_project_directory --version="6.1.*" --webapp

More details about Symfony CLI installation or composer you can find here.

Then go to the project folder:

cd my_project_directory

Then we will import Webpack into the Symfony project:

composer require symfony/webpack-encore-bundle

Then we install Webpack dependencies with Yarn:

yarn install

Rename app.css file in assets/styles/ folder to app.scss

Edit in the app.js file:

// ...
import './styles/app.scss';

// ...

Go to the webpack.config.js file at the root of the Symfony project, then remove “//” before .enableSassLoader() to activate the SassLoader

Then install the SassLoader with yarn:

yarn add sass-loader node-sass --save-dev

Then modify as below the twig template file at the location templates/base.html.twig:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>{% block title %}Welcome!{% endblock %}</title>
        <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text></svg>">
        {# Run `composer require symfony/webpack-encore-bundle` to start using Symfony UX #}
        {% block stylesheets %}
            {{ encore_entry_link_tags('app') }}
        {% endblock %}

        {% block javascripts %}
            {{ encore_entry_script_tags('app') }}
        {% endblock %}
    </head>
    <body>
        {% block body %}{% endblock %}
    </body>
</html>

Then we can check the status of the project using the compilation:

yarn encore dev

Then we can install Bootstrap in the Symfony project with yarn:

yarn add bootstrap --dev

Finally modify the app.js file again as below:

/*
 * 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.scss in this case)
import './styles/app.scss';

// start the Stimulus application
import './bootstrap';

We will then create a custom scss file that we will place in the /assets/styles folder called custom.scss
Then we will modify the structure of the app.scss file as below:

@import "custom";
@import "~bootstrap/scss/bootstrap";

body {
    background-color: lightgray;
}

Then we can build our sass file.

yarn encore dev

Finally we can make a test controller to check that Bootstrap works:

symfony console make:controller Test

Modify a page of the new Controller with Bootstrap in it (example the file templates/test/index.html.twig):

<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>

Start the web server and connect to the project:

symfony serve -d

Sources:

Webpack : https://webpack.js.org/concepts/
Symfony : https://symfony.com/doc/current/index.html
Bootstrap : https://getbootstrap.com/docs/5.2/getting-started/introduction/