wiki:Symfony

Environnement Symfony

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 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 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 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.
Last modified 12 years ago Last modified on Feb 8, 2012, 10:41:11 AM