mercredi 6 juillet 2011

Zend Framework - Zend_Form et Zend_db

Dans tout site web, l'élément principal qui permet à l'utilisateur de dialoguer avec le système sont les formulaires. Ils offrent le minimum syndical pour saisir les données et les envoyer au serveur pour des traitements ultérieurs. Le procédé le plus trivial pour réaliser cette tâche est d'écrire du code HTML et ensuite, un script PHP permettant de traiter ces données. Généralement, ce genre de méthode rend la maintenance du système très difficile et le code obtenu lors du déploiement aura un couplage très élevé. Zend, avec l'architecture qu'il offre, résout ce problème. Le framework met à disposition un objet très intéressant pour la création d'un formulaire : Zend_Form. C'est un objet hybride que l'on peut considérer comme un intermédiaire entre la vue et le controlleur. Dans cet article, j'essaierai de vous montrer comment créer un formulaire. Ensuite, je proposerai une solution assez simple pour capturer les données du formulaire et les enregistrer dans la base de données à l'aide de Zend_Db.

 Les outils que j'utilise pour le développement sont : Aptana Studio 3, Zend_Framework 1.11.7 et XAMPP server 1.7.3

Pour comprendre la suite, vous devez avoir une connaissance sur l'utilisation des commandes Zend. Je vous recommande de jeter un coup d'oeil sur l'article de mon blog : Zend Framework - Introduction.

Voilà, ceci étant dit, passons aux choses sérieuses :)

Commencez tout d'abord par créer un dossier dans le répertoire "htdocs" du serveur d'application (ici c'est XAMPP), et nommez le "tutorial_project". Ensuite, créez votre projet à l'aide de la commande zf create project. Ensuite, il faudra créer le formulaire que l'on souhaite développer. Pour ce faire, Zend offre une commande qui créé les fichiers nécessaires. 
zf create form nom_formulaire
Dans le répertoire "application" du projet, vous trouverez un dossier "forms" qui contient vos formulaires créés. Créons un formulaire que l'on va appeler "helloForm".
zf create form helloForm
Si tout s'est bien passé, vous devez avoir l'arborescence que représente l'image ci-dessous.


Le fichier .php du formulaire devrait contenir le code suivant :


Maintenant, il faudra définir les différents éléments du formulaire. Zend offre des objets prédéfinis Zend_Form_Element permettant de créer les différents objets de saisie du formulaire. Je ne vais pas lister les différents types d'objets à inclure, mais sachez que pour chaque type d'input (text, radio, etc.) il existe une classe. Par exemple, si l'on souhaite inclure une zone de texte, il faudra instancier Zend_Form_Element_Text.
Pour notre formulaire helloForm, nous allons inclure deux zones de texte (nom et prénom) et un bouton submit. Voici le code du formulaire que vous devriez obtenir :


Après avoir définit le formulaire, il reste maintenant à préparer la base de données pour effectuer des enregistrements. Le serveur de base de données que l'on utilisera dans notre projet est MySQL. Il faudra créer une base que l'on nommera "tutorial_db" ayant une table "personne" dont la structure est la suivante :


Pour pourvoir lancer une connexion vers la base de données, il faudra d'abord faire les configurations nécessaires dans le fichier "application.ini"

Emplacement du fichier application.ini
Il est possible d'effectuer les configurations manuellement, cependant, Zend offre une commande qui le fait automatiquement en lui spécifiant la chaine de connexion. Dans notre cas, la commande est la suivante :
zf configure db-adapter "adapter=pdo_mysql&username=root&password=&dbname=tutorial_db"
l'attribut "adapter" de la chaine de connexion permet de spécifier l'adaptateur à utiliser. Dans notre cas c'est "pdo_mysql". Si vous souhaitez effectuer une connexion vers un serveur PostgreSQL vous devriez utiliser l'adaptateur "pdo_pgsql". Des lignes seront ensuite ajoutées au fichier de configuration "application.ini".


Il faut maintenant créer le modèle qui servira à lancer les transactions vers la base pour l'enregistrement. On utilisera donc la commande :
zf create db-table nom_modele nom_table
Dans notre cas ce sera :
zf create db-table Personne personne
 Dans le répertoire "Models" de l'application vous aurez un nouveau dossier DbTable qui contient tous les modèles de la base de données.

L'arborescence du projet avec le fichier Personne.php
Contenu fichier Personne.php
Maintenant, il reste à mettre la touche finale pour afficher le formulaire et lancer l'enregistrement dans la base. Allez dans le dossier "Controllers" du répertoire de l'application, vous trouverez le fichier IndexController.php .
Emplacement du contrôleur Index
Contenu du fichier IndexController.php
C'est le controlleur principal du projet. Il est possible de définir nos propres controlleurs. Nous verrons comment faire dans un prochain article.
Dans le fichier du contrôleur, vous pouvez remarquer la présence d'une fonction IndexAction. Par abus de langage, on peut considérer que c'est la première fonction qui s'exécute pour l'affichage de la page (ce n'est pas vraiment le cas car c'est plus complexe que ça n'en a l'air). Dans cette fonction vous devrez définir les différents traitements pour l'affichage du formulaire et l'enregistrement des données. Le code du contrôleur Index devrait ressembler à ceci.



Maintenant pour finir, il suffit de définir la vue qui affichera le tout.

Emplacement de la vue de l'index
Le code dans la vue devrait être comme ceci pour notre projet.


Et voilà, il vous suffit maintenant d'aller sur votre navigateur préféré et de taper l'url suivante :
http://localhost/tutorial_project/public/
vous obtiendrez une page ressemblant à celle ci-dessous.


Félicitation ! Vous venez de réaliser votre première application web avec Zend Framework !

Si vous avez des questions, ou bien vous avez des corrections/améliorations à apporter à cet article, n'hésitez pas à m'en faire part à l'aide d'un commentaire.

Merci pour votre visite. Et à bientôt !

Aucun commentaire:

Enregistrer un commentaire