Utiliser Bootstrap avec Symfony 2

8

Intégrer Twitter Bootstrap à un projet Symfony en quelques minutes, sans obligatoirement passer par un Bundle

Intégrer Twitter Bootstrap à votre projet Symfony est devenu extrêmement simple puisque le composer peut gérer cela.

Depuis votre console, rendez-vous dans le dossier de votre projet et installer votre dépendance de cette façon :

composer require twbs/bootstrap

Voilà, Bootstrap  se trouve maintenant dans votre dossier « vendor ». Il ne reste plus qu’à configurer assetic pour pouvoir compiler les fichiers less en css et utiliser Bootstrap dans nos layouts. Pour cela, il suffit d’ajouter la configuration pour bootstrap dans votre config.yml :

# app/config/config.yml
 ...
 # Assetic Configuration
 assetic:
debug: %kernel.debug%
use_controller: false
bundles: [ ]
filters:
less:
node: /usr/local/bin/node
node_paths: [/usr/local/lib/node_modules]
apply_to: "\.less$"
cssrewrite: ~

Comme toujours dans ce fichier, respectez bien les indentations. Le chemin vers node est à adapter selon votre configuration système.

Il faut ensuite configurer assetic pour générer vos fichiers css et js.

# app/config/config.yml
 …
 # Assetic Configuration
assetic:
 ............
 assets:
 bootstrap_css:
 inputs:
 - %kernel.root_dir%/../vendor/twbs/bootstrap/less/bootstrap.less
 filters:
 - less
 - cssrewrite
 output: css/bootstrap.css
 bootstrap_js:
 inputs:
 - %kernel.root_dir%/../vendor/twbs/bootstrap/js/affix.js
 - %kernel.root_dir%/../vendor/twbs/bootstrap/js/alert.js
 - %kernel.root_dir%/../vendor/twbs/bootstrap/js/button.js
 - %kernel.root_dir%/../vendor/twbs/bootstrap/js/carousel.js
 - %kernel.root_dir%/../vendor/twbs/bootstrap/js/collapse.js
 - %kernel.root_dir%/../vendor/twbs/bootstrap/js/dropdown.js
 - %kernel.root_dir%/../vendor/twbs/bootstrap/js/modal.js
 - %kernel.root_dir%/../vendor/twbs/bootstrap/js/tooltip.js
 - %kernel.root_dir%/../vendor/twbs/bootstrap/js/popover.js
 - %kernel.root_dir%/../vendor/twbs/bootstrap/js/scrollspy.js
 - %kernel.root_dir%/../vendor/twbs/bootstrap/js/tab.js
 - %kernel.root_dir%/../vendor/twbs/bootstrap/js/transition.js
 output: js/bootstrap.js

Enfin, afin de profiter des icônes Glyphicon de Bootstrap, il faut ajouter la police dans votre dossier web. Il suffit simplement de copier le dossier FONTS de bootstrap vers votre dossier web

cp -a vendor/twbs/bootstrap/fonts web

Voilà, tout est prêt. il ne reste plus qu’à générer le dump assetic:

php app/console assetic:dump

Puis ensuite à ajouter le css et js dans votre template twig :

<!-- Bootstrap -->
 <link rel="stylesheet" href="{{ asset('css/bootstrap.css') }}">
 <script src="{{ asset('js/bootstrap.js') }}"></script>

C’est tout, vous avez installé et configuré correctement Bootstrap + Glyphicon. Notez que vous devez ajouter jQuery pour utiliser les plugins javascript de Bootstrap. Si ce n’est pas le cas :

composer require components/jquery

 

  • Van Kocko

    j’ai réussi à faire toute les étapes sauf que cette ligne:apply_to: « .less$ » dans app/config/config.yml ne passe pas il me marque une erreur.Ma question est: il s’applique sur quoi? node.js?

    • c’est pour préciser que ce filtre less n’est à appliquer que sur les fichiers avec l’extension .less

      • Van Kocko

        Merci pour la précision.Encore une question:
        Faudrait-il que je mette le lien du dossier correspond: apply_to: « vendor/twbs/bootstrap/less »?

        • non, pas besoin, assetic surveillera tous les ficheirs de type .less dans votre porjet

          symfony, pas besoin de préciser le chemin. Pour l’erreur, il faut peut-être vérifier l’indentation. J’avoue que le code sur l’article n’est pas très explicite au sujet de l’indentation.

          Exemple :

          http://symfony.com/doc/current/cookbook/assetic/apply_to_option.html

          Voir ficheir joint en exemple, qui montre l’indentation de chaque ligne (même si dans ce cass, c’est pour .coffee)

          • Van Kocko

            Merci encore pour plus de précision.Je n’ai plus d’erreur qui s’affiche mais par contre après avoir mis le lien :

            dans ma vue il n’ y’a pas de présence de bootstrap.
            Je sais pas si j’ai oublié quelque chose mais je pense avoir été fidèle au tutoriel.Merci encore pour l’aide.Van

          • Lors du dump assetic, le ficheir css est bien généré ? est-il présent dans votre dossier ?

            regénérer les symlink ?

            php app/console assets:install root –symlink

            Essayez aussi de vider le cache avant de faire le dump :

            php app/console cache:clear

          • Van Kocko

            voici les résultats après la commande :php bin/console assetic:dump
            Dumping all dev assets.
            Debug mode is on.
            voici pour la seconde commande :php bin/console assets:install root –symlink
            [InvalidArgumentException]
            The target directory « root » does not exist.
            pour la dernière:php bin/console cache:clear
            [OK] Cache for the « dev » environment (debug=true) was successfully cleared.
            Mais ça ne passe pas toujours

          • Van Kocko

            Par contre je ne sais pas ou est le dossier des fichiers css générés?

Recevoir la newsletter

Recevoir la newsletter

Recevez les dernières news et astuces Wordpress & Développement Web par email une fois par semaine

Bravo, vous êtes inscrits