Tuto Symfony – générer la DB et le CRUD

On a déjà vu comment générer un bundle. Et bien pour notre CRUD, on va en générer un rien que pour ses beaux yeux. Donc on va créer un bundle. Ici, je l’appelle CrudBundle (car je suis une personne originale).

001-creationbundlecrud
Voilà. Le Bundle est créé.

Occupons-nous de mettre un chouette préfixe à notre nouveau bundle dans le routing général (celui du dossier App). Ici, sobrement mais surement, le préfixe sera /crud.

changement-routing general
On va éditer un menu qui existait déjà dans un autre bundle. Et on va rajouter la page d’accueil du CRUD.

003-onchangelemenu
Quand on fait sa base de données, on doit bien faire gaffe qu’il y a une et une seule clef primaire par table.

On doit également faire attention qu’il n’y ait pas d’underscore sur les champs des tables (pour les tables de jointures, on s’en fout parce que Symfony les ignore royalement).

004-onforwardeladbDans notre CrudBundle > Resources > datas (dossier que nous créons nous-même), on va enregistrer le fichier mwb (de workbench) et le sql (qu’on récupère au moment du forward)

005-dansledossierdatas

Avant toute chose, on va aller dans parameters pour changer le nom de la DB (par défaut c’est Symfony mais là, ça sera autre chose).

006-dansparametersBah ouais, la DB s’appelle pas Symfony

007-dansphpmyadmin-automatique

On a fait un premier « lien » avec la DB en indiquant dans parameters le nom de la DB concernée. Maintenant, on va faire le lien dans le projet Symfony en générant des fichiers liés aux tables. Pour ce faire, on tape :

php app/console doctrine:mapping:import annotation

008-doctrine_mapping_import_bundle_annot

Comme on n’est pas à l’abri d’une éventualité, on va vérifier que le mapping a été fait correctement en tapant :

php app/console doctrine:mapping:info

009-mapping_info

Si tout s’est bien passé, dans le projet Symfony, on aura un nouveau fichier dans le dossier Bundle > Entity > Nom_de_la_table.php

010-creation_test_php

Maintenant, on va générer les entités (les setters et getters) avec :

php app/console doctrine:generate:entities CrudBundle

011-generate_entities

Et on peut voir brièvement qu’effectivement, notre fichier Nom_de_la_table.php a été rallongé avec du code (les setters et getters).

012-test_php_achange

Maintenant, passons à la partie un peu plus sexy du tuto : comment générer le CRUD (ouais la partie chiante qu’on se tapait à la main avant)

013-creer_crud

On va ensuite vérifier que tout s’est bien passé avec notre projet Symfony en tapant :

php app/console doctrine:schema:validate

014-doctrine_schema_validate

Doux Jesus ! Il y a des fichiers qui ont été créés !

015-dossier_app_resources_views_test

Petite observation : On observe qu’il y a un dossier Form avec un Nom_de_classeType.php dedans. Et dans notre Nom_de_classeController, on y fait mention. Bah voilà, vous avez fait le lien tout seul.

015-testcontroller_avec_tout_dedans
Dans le Nom_de_classeController, on a ceci :
017-testcontroller_va_avec_affichage
Qui va afficher ceci :

Ici, on va créer manuellement un constructeur (parce que déjà y’en a pas) et surtout parce que sinon, quand on va essayer d’insérer des trucs, il va gueuler à cause du format de la date. Ici, on va donc indiquer qu’on veut que la date soit en DateTime.
018-constructeur_cree_dans_test_php
Et là, on peut afficher des trucs comme ça et même faire des insertions réussies !

018-et_la_ca_fonctionnePetite observation : on retrouve des appels de formulaires. C’est beau.

019-jesaispas
Dans le Controller, dans les annotations, on repère le chemin : crud_test_index

020-lien_depuis_testcontrollerEt on va s’en servir pour créer un lien dans l’affichage.

020-crud_index_html__lienNotons un autre truc : les fichiers générés lors de la création du CRUD dans la console se trouvent dans app/Resources/views

021-onbougecaMais pour pas s’embêter, on va les bouger jusque dans CrudBundle/Resources/views

021-verslaMais du coup, dans les 4 fichiers, on doit changer le lien pour le render :

022-du_coup_dans_les_4_file_on_change_le_lien

Laisser un commentaire

Articles similaires

Commencez à saisir votre recherche ci-dessus et pressez Entrée pour rechercher. ESC pour annuler.

Retour en haut