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 commandebonjour
sera reconnue par le contrôleur de notre BundlePSPAHelloBundle_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.