Synfony2 - créer un bundle

, par  admin

Un Bundle est un répertoire dans lequel sont encapsulés diverses ressources telles que les contrôleurs ou les classes.

Génération du nouveau Bundle :

Placez vous dans le dossier Symfony puis lancez la commande suivante :

Le nom doit se terminer par Bundle

Répondez oui par défaut aux questions suivantes puis choisissez le format de configuration (yml dans notre cas).

Faîtes le test sur l’url :

http://localhost/app_dev.php/hello/tuto
==> Hello tuto!

Vous pouvez pouvez remplacer "tuto" (le namespace) par la valeur que vous désirez, il suffit de conserver la syntaxe Namespace/Nom/Bundle. Le bundle est généré dans le répertoire src et commence par le nom de son namespace : tuto.

Le bundle est automatiquement chargé dans le fichier app/AppKernel.php et le code dans l’emplacement défini lors de la création (src/ par défaut).
Vous pouvez vérifiez sa présence dans l’onglet config de la page Profiler (Active Bundles) :
PNG

Configuration du routeur :

Nous allons renseigner le chemin /hello-world-test ainsi qu’un nouveau contrôleur nommé Hello [1] :

tuto_hello_test:
   path:     /hello-world-test
   defaults: { _controller: tutoHelloBundle:Hello:index }

L’emplacement du fichier routing.yml est indiqué dans le le fichier de configuration de base routing.yml du dossier app :

tuto_hello_test:
   resource: "@tutoHelloBundle/Resources/config/routing.yml"
   prefix:   /

Création d’un contrôleur :

Nous allons à présent créer le contrôleur Hello :
Emplacement du contrôleur dans le Bundle : HelloBundle/Controller
Création d’un nouveau contrôleur :
nano HelloController.php

<?php
// src/tuto/HelloBundle/Controller/HelloController.php
namespace tuto\HelloBundle\Controller;
use Symfony\Component\HttpFoundation\Response;
class HelloController
{
   public function indexAction()
   {
       return new Response("Tuto Hello World !");
   }
}

Testons maintenant l’url http://serveur/app_dev.php/hello-world-test
Résultat : Tuto Hello World !

Création d’un template

Emplacement des templates : /src/tuto/HelloBundle/Resources/views
Noyus allons créer le répertoire correspondant à notre contrôleur Hello

Création du fichier .html ou .html.twig :

<!DOCTYPE html>
<html>
   <head>
       <title>Page de Tuto Symfony</title>
   </head>
   <body>
       <h1>Tuto Symfony</h1>

   </body>
</html>

Modifions à présent notre contrôleur Hello afin qu’il charger le template index.html.twig :src/tuto/HelloBundle/Controller/HelloController.php

<?php
// src/tuto/HelloBundle/Controller/HelloController.php
namespace tuto\HelloBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;


class HelloController extends Controller
{
   public function indexAction()
   {
    $content = $this->get('templating')->render('tutoHelloBundle:Hello:index.html.twig');
    return new Response($content);
   }
}

Testez l’URL et le code html du template doit s’exécuter ! enfin j’espère ;)

A++

PS : en cas de problèmes, pensez à vider le cache :

[1Attention les retraits se font avec 4 espaces et non avec une tabulation (Identation yml)

Un peu de théorie... Tous les cours théoriques