On démarre avec Symfony2
J’ai décidé de créer un projet avec Symfony 2. Je vais donc en profiter pour mettre quelques notes à ce sujet sur ce blog, au fur et à mesure des bugs que j’ai rencontré. Cela fait trop longtemps que je corrige des bugs, et que, une fois confronté au même problème 6 mois plus tard, je reprends la méthode « essai/erreur » pour le résoudre… Désormais, tout (ou presque) sera consigné ici, et consultable par tous !
Pour démarrer, je vais expliquer comment j’ai installé Symfony2 sous OS X Lion, et créé un simple accès à la base de données en CRUD (Create, Read, Update, Delete).
Installation
J’ai bien entendu téléchargé Symfony2 (v. 2.0.4) sur le site de Sensio Labs. J’ai ensuite décompressé le fichier dans le répertoire « Sites » de mon mac. J’ai renommé le dossier « Symfony » nouvellement créé en « monapp ».
J’ai lancé le terminal et fait le premier test.
Et corrigé les erreurs selon ce que Symfony2 me dit. Une étape incontournable est de changer les permissions de certains répertoires en 777 :
Le -R indique au script que l’intégralité du dossier, avec ses sous-dossiers, doit être passé en 777.
Ensuite, un petit tour vers http://votreserveur/monapp/app_dev.php/config.php pour la configuration de la base de données, etc.
On rentre dans le lard !
Dans le terminal, et toujours au sein du dossier de mon appli, j’ai créé un bundle en suivant les options par défaut :
Notez qu’il faut lui donner un espace de nom (namespace), et qu’il doit finir par le terme Bundle : « Delalande/BlogBundle », par exemple. Ensuite, il faut lui donner un nom, idéalement basé sur ce que vous avez indiqué avant, comme « DelalandeBlogBundle ». J’ai ensuite validé les options proposées, mais répondu « yes » à la question suivante :
Une fois notre Bundle créé, nous avons une coquille vide. Il faut la remplir avec une structure liée à la base de données. On fait donc appel à Doctrine pour créer une entité.
J’ai donc créé le shortcut tel que demandé :
Puis validé le format de configuration (ici, Annotation)
J’ai ensuite créé mes champs :
…et confirmé.
Vient ensuite le moment où cette entité va prendre « vie » sur la base de données :
Si vous vérifiez votre serveur de base de données, une base portant le nom de celle spécifiée lors de l’installation de Symfony a été créée, et la table correspondante ajoutée.
L’étape suivante est la création des vues et du contrôleur de l’entité générée. Il suffit de taper :
De rappeler le raccourci :
Puis :
et valider le reste ! Allez faire un tour sur http://votreserveur/monapp/app_dev.php/post et faites mumuse avec les champs de votre base de donnée !
Autoriser un champ NULL dans l’interface CRUD
J’ai créé un champ de « private » type Boolean. Ce champ n’a pas la possibilité d’être NULL, ce qui le rend par ailleurs complètement inutile, à moins qu’il ne serre à une validation de CGV, par exemple.
Pour autoriser « private » à être décoché, il faut se rendre dans src/Delalande/BlogBundle/Entity/Post.php et modifier :
en
J’ai également modifié le champ directement dans la base de données, en autorisant une valeur NULL.
Ainsi, mon champ « private » peut être activé, ou non.