Quantcast
Channel: y3dev
Viewing all articles
Browse latest Browse all 25

Symfony 2.6 – Création bundle + base de données + entité

$
0
0

Maintenant que nous avons un projet Symfony prêt à l’emploi, nous allons créer une base de données lié au projet + un bundle + une entité.
Un bundle est un ensemble de fichiers et répertoires permettant d’implémenter des fonctionnalités dans votre projet. Ils sont constitués de vues, actions, modèles, et fichiers de config.
Une entité est un objet PHP (une classe) qui sera utilisé par doctrine ORM pour manipuler les données.

1°) la Base de données
Nous allons utiliser Doctrine ORM. Pour faire simple un ORM permet d’accéder assez facilement à sa base de données, il intègre des fonctionnalités permettant d’enregistrer, de mettre à jour, de supprimer et de lister des enregistrements de la base de données. Pour définir les paramètres de connexion, renseignez vos paramètres de connexion dans le fichier : app/config/parameters.yml

 
# This file is auto-generated during the composer install
parameters:
    database_driver: pdo_mysql
    database_host: 127.0.0.1
    database_port: null
    database_name: monProjetWeb
    database_user: root
    database_password: null
    mailer_transport: smtp
    mailer_host: 127.0.0.1
    mailer_user: null
    mailer_password: null
    locale: en
    secret: 51e9fb5cd822ca337f0d010114bb0e346350fa4e

Ensuite rendez-vous dans le répertoire de votre projet Symfony puis exécuté la commande suivante :

 
php app/console doctrine:database:create

Résultat :
symfony-db-1

Démarrer votre serveur MySQL. puis vérifier que votre base de données à bien été créé. Si vous utilisez xampp lancer phpmyadmin pour vérifier la création de votre base.

2°) le bundle
Nous allons maintenant créer notre bundle, toujours dans le répertoire de votre projet exécuter la commande suivante :

 
php app/console generate:bundle

A. le namespace
Un namespace doit toujours se terminer par : Bundle (ex : MonProjetWebBundle). Par convention, il est constitué de trois parties. Nous allons entrer comme libelle pour notre namespace : y3\MonProjetWebBundle.

Structure d’un namespace : y3 / MonProjetWeb / Bundle .
« y3 » est le namespace racine : il correspond à votre entreprise,site web,communauté ou association.
« MonProjetWeb » est le nom de votre projet symfony.
« Bundle » terminaison obligatoire du nom de votre bundle.

Dans votre console vous devrez mettre y3/MonProjetWebBundles, le slashes ne sera utilisé que dans ce cas de figure. Pour les autres cas d’utilisation nous l’écrirons comme ceci : y3MonProjetWebBundle

B. le nom
Vous devrez ensuite donner un nom à votre bundle. Un nom pour le bundle vous sera proposer par défaut en fonction de votre namespace.

C. répertoire de destination
Symfony vous proposera un emplacement par défaut dans le répertoire /src pour stocker votre bundle.

D. Choisir le format des fichiers de configuration
Il existe plusieurs type de fichiers de configuration : YAML, XML, PHP ou Annotations. Le plus utilisé est Yaml donc nous allons entrer : yml.

E. Structure du bundle
l’invite de commande vous propose de générer une structure simple ou complète pour le bundle. Ce n’est pas utile de générer une structure complète, donc nous allons dire : no (réponse par défaut).

Pour les autres questions laissées la réponses par défauts et confirmé.

résultat :
Capture - creation bundle

3°) Entité
Nous allons maintenant créer une entité. Plus tard à partir de cette entité Nous allons créer une table SQL liée. Supposons que vous avez crée une application affichant des utilisateurs. Vous savez déjà que vous aurez besoin d’un objet utilisateurs (ou users) représentant ces derniers. Utilisez la commande suivante pour créer votre entité.

 
    
   
php app/console doctrine:generate:entity  --entity="y3MonProjetWebBundle:Users"   --fields="name:string(255) price:float description:text"
  
  

A. Ajout de nouveaux champs
si la commande s’est bien exécuté, l’invite de commande vous demandera si vous souhaitez ajouter de nouveau champs à votre entité, appuyer sur entrer si ce n’est pas le cas.

B. Génération d’un dossier vide
l’invite de commande vous demande si vous souhaitez créer un dossier vide, par défaut no, donc appuyer sur entrer.

C. Génération du bundle
l’invite de commande vous demande si vous êtes sur de vouloir créer votre entité, par défaut oui, donc appuyer sur entrer.

Capture-entite

Votre Entité est maintenant prête à l’emploie. Attention si votre bundle n’est pas nommé correctement, vous pourrez vous retrouvez avec l’erreur suivante :

The Entity shortcut name [y3monProjetWebBundle:Users]:
Bundle « y3monProjetWebBundle » does not exist.

Ici l’erreur vient du faite que le bundle devrait être y3MonProjetWebBundle au lieu de y3monProjetWebBundle.

Doctrine sait comment enregistrer un objet dans la base de données. La classe elle-même n’est pas encore très utile. Comme Users est juste une simple classe PHP, vous devez créer des getters (fonctions permettant de récupérer des données) et des setters (fonctions permettant de définir des données). Doctrine est capable de générer les getters et le setters avec la commande suivante :

 



php app/console doctrine:generate:entities y3MonProjetWebBundle:Users/Users



symfony-db-3

pour finir générons les table SQL à partir de l’entité avec la commande suivante :

 
php app/console doctrine:schema:update --force

symfony-db-4

Si vous avez une erreur de syntaxe rendez vous dans le dossier de votre bundle : « monProjet/src/y3/GestionDroitsUsersBundle/Resources/config/doctrine » et modifier le fichier « .orm.yml » dans notre cas : « users.orm.yml ». Essayer de modifier le fichier en fonction de l’erreur retournée.

Documentation officiel : Doctrine + base de données


Viewing all articles
Browse latest Browse all 25

Trending Articles