= Environnement Symfony * [http://symfony.com/ le site web] Symfony a été installé dans `/htdocs2/vm-web-2/pspa/Symfony` qui est l'espace accessible au serveur Apache. == Installation d'un bundle En terminologie Symfony, tout développement se présente comme un ''bundle'' (librairies, ressources, ...) La documentation pour démarrer est [http://symfony.com/doc/current/book/page_creation.html ici]. On y apprend comment installer un bundle minimal. J'ai donc créé ce bundle minimal `Hello` dans l'espace de nom `PSPA`, installé dans un dossier `framework` J'ai donc utilisé la commande Unix: {{{ (en étant connecté ssh sur la machine vm-web-2) > cd /htdocs2/vm-web-2/pspa > php Symfony/app/console ... Usage: generate:bundle [--namespace="..."] [--dir="..."] [--bundle-name="..."] [--format="..."] [--structure] Options: --namespace The namespace of the bundle to create --dir The directory where to create the bundle --bundle-name The optional bundle name --format Use the format for configuration files (php, xml, yml, or annotation) (default: annotation) --structure Whether to generate the whole directory structure Pour notre cas: php Symfony/app/console generate:bundle --namespace=PSPA/HelloBundle --dir=framework --format=yml }}} ''L'aide de cette command est visible [http://www.blog.manit4c.com/pdf/symfony2/cheat_sheet/symfony2-console.pdf ici]'' Cette commande crée le bundle et la structure de directory associée sous le dossier `framework` {{{ /htdocs2/vm-web-2/pspa/framework/PSPA/HelloBundle/... }}} Mais afin de faire reconnaître cet espace, plusieurs déclarations dans les fichiers de configuration de Symfony ont été faites automatiquement par la commande précédente: * Dans le fichier `Symfony/app/autoload.php`: {{{ 17: 'PSPA' => __DIR__.'/../../framework' }}} * Dans le fichier `Symfony/app/AppKernel.php` {{{ 20: new PSPA\HelloBundle\PSPAHelloBundle(), }}} * Dans le fichier `Symfony/app/config/routing.yml` {{{ PSPAHelloBundle: resource: "@PSPAHelloBundle/Resources/config/routing.yml" prefix: / }}} Le [http://vm-web-2.lal.in2p3.fr/pspa/Symfony/web/app_dev.php/bonjour/name=toto résultat] est accessible à l'adresse: `http://vm-web-2.lal.in2p3.fr/pspa/Symfony/web/app_dev.php/bonjour/name=toto` == Le code généré automatiquement pour ce bundle Hello Voici la structure de directories construite par Symfony, qui respecte ses propres conventions: {{{ |-- Controller | `-- DefaultController.php |-- DependencyInjection | |-- Configuration.php | `-- PSPAHelloExtension.php |-- PSPAHelloBundle.php |-- Resources | |-- config | | |-- routing.yml | | `-- services.yml | |-- doc | | `-- index.rst | |-- public | | |-- css | | |-- images | | `-- js | |-- translations | | `-- messages.fr.xliff | `-- views | `-- Default | |-- index.html.twig | `-- index.html.twig~ `-- Tests `-- Controller `-- DefaultControllerTest.php }}} A priori, le bundle est fonctionnel, tel quel. === Code utilisateur Ce module est donc lancé via votre navigateur, à l'adresse `http://vm-web-2.lal.in2p3.fr/pspa/Symfony/web/app_dev.php/bonjour/name=toto` * Notre bundle est en fait par l'application générique fournie par Symfony: `Symfony/web/app_dev.php` * le système de 'routage' des commandes défini dans `Resources/config/routing.yml` précise que la commande `bonjour` sera reconnue par le contrôleur de notre Bundle {{{ PSPAHelloBundle_homepage: pattern: /bonjour/{nom} defaults: { _controller: PSPAHelloBundle:Default:index } }}} * Ce fichier de configuration indique en outre que la valeur `nom` devra être fournie dans l'URL, sous la forme: {{{ /bonjour/nom=toto }}} * Le fichier de configuration `Resources/views/Default/index.html.twig` fournit le format d'output de la réponse produite.