Symfony2 en action, 1 mois pour tout changer (part 1)

Cela fait quelques temps que je tourne autour de Symfony2 sans vraiment m’y mettre. Mais d’ici quelques mois, je n’aurai plus le choix. N’ayant pas trouvé de meilleur méthode d’apprentissage qu’en faisant par moi-même, je me fixe un objectif simple refaire mon site de photo Live Pics sur Symfony2 avec comme échéance la fin du mois.

Je vais profiter de cette occasion et de ce blog pour partager le développement du projet avec toutes mes questions et je sais quelles seront nombreuses et les réponses que j’ai mis en face.

 

1. Présentation du projet

En visitant la version actuelle de Live Pics, je pense que beaucoup se demanderont quel est l’intérêt d’utiliser Symfony2 pour ce site pas vraiment complexe et ne générant pas des tonnes de visites. La réponse est simple : pourquoi pas ? Je ne vois pas pourquoi Symfony serait mauvais pour un petit site et je préfère de loin coder sur Symfony que d’essayer de faire du joomla ou consort. Le site est simple et je pense qu’appréhender Symfony2 avec quelques choses de simple n’est pas une si mauvaise idée.

D’un point de vue projet, je ne pense pas changer grand-chose  par rapport au site actuel hormis la suppression de la partie Actualités et l’utilisation de ExtJs pour le javascript.

 

2. Choix de la version

Je n’ai pas encore commencé que se pose déjà la question de la version. SensioLabs propose Symfony2 en version standard avec ou sans la lib vendor.  Si l’on choisit Symfony2 sans la lib vendor, il est simple de récupérer les lib manquantes avec la ligne de commande.

 
> php ./lib/vendor install

Cette fonction lit le fichier « deps » qui se trouve à la racine du projet Symfony et exécute des commandes git pour récupérer les libriaries manquantes. En changeant « install » par « update » on peut mettre à jour les librairies à leurs dernières versions. Cela peut être très pratique pour garder sa version de Symfony2 à jour mais crée une belle collection de fichier git dans le dossier /vendor et cela m’ennuis beaucoup car je compte utiliser svn comme gestionnaire de fichier pour mon projet.

En prenant la version standard avec la lib vendors  je n’ai pas le problème des fichiers git ce qui m’arrange mais en contrepartie cela implique que je devrai  installer et mettre à jour « à la main » les libs et les bundles de Symfony2. On verra à l’usage si cela me pose des problèmes.

Pour éviter toute ambiguité avec la version standard avec les libs vendor, il est tout de même possible de mettre à jour et compléter son projet Symfony2 avec la ligne de commande, il suffit juste de réinstaller la lib vendor pour initialiser git.

 
> php ./lib/vendor install --reinstall

 

3. Configuration du projet

a. Configuration du serveur

J'ai choisis la version de Symfony2 et je l'ai commité dans mon SVN. Si pour vous aussi c'est votre premier projet Symfony2, je vous conseil d'afficher le fichier /web/config.php pour vérifier que votre serveur est correctement configuré pour Symfony2. Personnellement, j'ai du installer SQLite3 et son support pour PHP. Il vous faudra peut être aussi mettre à jour PHP si vous n'avez pas déjà la version 5.3.

 
> aptitude install sqlite3 php5-sqlite
 

Pour obtenir une liste complète des besoins de Sf2 utilisez la ligne de commande:

 
> php ./app/check.php

 

b. Configuration du web controller de développement

J'ai configuré un vhost qui pointe sur le dossier web/ de Symfony, du coup tout comme avec Symfony 1, je dois modifier le script app_dev.php pour qu'il autorise les IPs de mon réseaux 192.168.0.xxx.

 
<?php
 
// this check prevents access to debug front controllers that are deployed by accident to production servers.
// feel free to remove this, extend it, or make something more sophisticated.
if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
    '127.0.0.1',
    '::1',
))
&& !preg_match('#^192\.168\.0\.\d{1,3}$#', @$_SERVER['REMOTE_ADDR'])
) {
    header('HTTP/1.0 403 Forbidden');
    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
}

 

c. Configuration de la base de donnée


On peut modifier les paramêtres de connexion de la base de donnée à plusieurs endroits. Par défault ils sont dans le fichier /app/config/parameters.ini mais les routines de Symfony2 importe automatiquement ces paramêtres dans /app/config/config.php
Et c'est très intéréssant car il est possible de surcharger ce fichier pour chaque environnement avec les fichiers /app/config/config_dev.php, /app/config/config_prod.php ....... La config de base me conviens très bien car j'utilise MySQL en local, par contre je dois modifier le nom de la base, le login et le mot de pass. J'ajoute donc au fichier /app/config/config_dev.php

 
doctrine:
    dbal:
        dbname:   'lp'
        user:     'user1'
        password: 'pass1'

 

Voilà pour un premier démarrage avec sf2. Dans le prochain article, je commencerai à coder la partie front du site, pour une fois je terminerai par l'admin.

Il n'y aucun commentaire