Dans ce premier chapitre, nous allons installer l'environnement de développement, installer Symfony2 et afficher une page de l'application dans un navigateur web. Tout d'abord, vous devez vérifier que votre ordinateur dispose d'un environnement de travail pour le développement web. Au minimum, vous avez besoin d'un serveur web (Apache, par exemple), un moteur de base de données (MySQL), et PHP 5.3.2 ou plus récent.
Préparez un répertoire sur votre serveur web où vous souhaitez installer le nouveau projet. Nous nommerons ce répertoire jobeet comme le nom de notre futur site web. Ensuite, allez à http://symfony.com/download, choisissez "Symfony Standard" (la version avec les dépendances) et téléchargez-le (au moment de la rédaction de ce tutoriel, la dernière version de Symfony était 2.0.11). Après le téléchargement, décompressez l'archive et copiez le contenu du répertoire "Symfony" dans celui de votre projet. Vous devriez avoir quelque chose comme ceci:
Une bonne pratique est de mettre à la racine uniquement les fichiers qui doivent être accessibles par un navigateur web, comme les feuilles de style, les fichiers javascripts et les images. Par défaut, il est recommandé de stocker ces fichiers dans le sous-répertoire /web du projet.
Afin de configurer Apache pour votre nouveau projet, localisez et ouvrez le fichier de configuration httpd.conf et ajoutez la configuration suivante:
<VirtualHost *:80> ServerName jobeet.local DocumentRoot /home/dragos/work/jobeet/web DirectoryIndex app.php ErrorLog /var/log/apache2/jobeet-error.log CustomLog /var/log/apache2/jobeet-access.log combined <Directory "/home/dragos/work/jobeet/web"> AllowOverride All Allow from All </Directory> </VirtualHost>
Modifiez la configuration ci-dessus en tenant compte de votre configuration, puis redémarrez votre serveur web.
Il s'agit de la méthode standard pour définir un nouvel hôte virtuel dans Apache. Selon la configuration de votre serveur ou la version d'Apache, certaines choses peuvent être légèrement différentes. Par exemple, dans Ubuntu, vous devez créer un nouveau fichier dans le dossier /etc/apache2/sites-enabled/ nommé jobeet avec le contenu ci-dessus.
Le nom de domaine jobeet.local utilisé dans la configuration d'Apache doit être déclaré localement. Si vous utilisez un système Linux, il doit être fait dans le fichier /etc/hosts. Si vous utilisez Windows, ce fichier se trouve dans le dossier C:\WINDOWS\system32\drivers\etc\. Ajoutez la ligne suivante:
127.0.0.1 jobeet.local
Après le redémarrage d'Apache, ouvrez votre navigateur et tapez http://jobeet.local/app_dev.php. Vous devriez voir la page suivante:
Pour éviter de vous arracher les cheveux un peu plus tard, vérifiez que votre configuration peut exécuter un projet Symfony2 en pointant sur l'adresse suivante: http://jobeet.local/config.php. Assurez-vous que vous n'avez pas de problème majeur mentionné, et suivez les recommandations facultatives énumérées (le cas échéant).
Tout comme Symfony 1.x, Symfony2 est livré avec l'outil composant de la console que vous allez utiliser pour différentes tâches. Pour voir une liste des choses qu'il peut faire pour vous, tapez à l'invite de commande:
php app/console list
Comme vous le savez, un projet Symfony2 est composé de paquets. Même le framework Symfony est un paquet. Pour créer un nouveau paquet pour notre application, exécutez la ligne de commande:
php app/console generate:bundle --namespace=Ens/JobeetBundle --format=yml
Le générateur va vous poser quelques questions avant de générer le paquet. Voici les questions et les réponses (toutes sauf une sont les réponses par défaut):
Bundle namespace [Ens/JobeetBundle]: Ens/JobeetBundle Bundle name [EnsJobeetBundle]: EnsJobeetBundle Target directory [/home/dragos/work/jobeet/src]: /home/dragos/work/jobeet/src Configuration format (yml, xml, php, or annotation) [yml]: yml Do you want to generate the whole directory structure [no]? yes Do you confirm generation [yes]? yes Confirm automatic update of your Kernel [yes]? yes Confirm automatic update of the Routing [yes]? yes
Videz le cache après avoir créé le nouveau paquet avec:
php app/console cache:clear --env=prod php app/console cache:clear --env=dev
Le nouveau paquet Jobeet peut maintenant être trouvé dans le répertoire src du projet: src/Ens/JobeetBundle. Le générateur de paquet a créé un DefaultController avec une action index. Vous pouvez accéder à celui-ci dans votre navigateur: http://jobeet.local/hello/jobeet ou http://jobeet.local/app_dev.php/hello/jobeet
Comme Symfony 1.x, Symfony2 a aussi des environnements différents. Si vous regardez dans le répertoire /web du projet, vous verrez deux fichiers php: app.php et app_dev.php. Ces fichiers sont appelés contrôleurs frontaux, toutes les requêtes de l'application se font à travers eux. Le fichier app.php est pour l'environnement de production et app_dev.php est utilisé par les développeurs Web quand ils travaillent sur l'application dans l'environnement de développement. L'environnement de développement sera très utile, car il vous montrera toutes les erreurs et avertissements via la Web Debug Toolbar - le meilleur ami du développeur.