Jan.01

Apprendre Zend Framework 2 sous windows partie 4

Apprendre Zend Framework 2 sous windows partie 4

c) Les vues

On doit créer les vues de chaque action de notre controller , ‘ index.phtml’, ‘ajouter.phtml’, ‘modifier.phtml’, et ‘supprimer.phtml’. N’oubliez pas de mettre un peu code d’html dans chaque vue, pour voir le résultat. Pour vérifier tout ce qu’on a fait jusqu’a maintenant, on essaie d’accéder aux liens suivants :

Si tout ce passe bien, normalement, les vues qu’on a crée, seront affichée avec le code html ajouté. S’il y’a une erreur 404, ou un autre message d’erreur, essayez de me laisser un commentaire, avec le message d’erreur, et je vais essayer de vous aider dés que possible. Si vous supprimez la ligne de déclaration de module ‘Application’, et vous essayez d’accéder au lien par défaut de notre application ‘www.zf2test.dev/contact’, vous aurez un message d’erreur fatal

error1

Si vous lisez bien la 1ere ligne de ce message d’erreur, vous allez comprendre que zf2 essaie de chercher les templates des messages d’erreur, mais il trouve pas le chemin. Pour régler ce problème, on doit passer quelques parametres au view_manger de zend zramework 2, on edit le fichier conf de notre module ‘module.config.php’, et on modifie l’array ‘view_manger’, pour qu’il ressemble au code suivant :

Créer les templates qui manquent pour notre module, (‘view/layout/layout.phtml’,’view/error/404.phtml’ et ‘view/error/index.phtml’), je vous donne le code source de chaque template

PS : ces templates se sont les mémes templates qui se trouvent dans le module ‘application’, j’ai juste nettoyer leurs codes des appels de traduction, on va laisser la traduction de notre application jusqu’à la fin. – La template layout, la principale template, c’est elle qui englobe les autres templates, et qui se trouve dans un dossier ‘view/layout’ :

Je vous conseille de regarder un peu le code de cette template pour voir comment zf2  appelle les css, js et les images , qui se trouve dans le dossier ‘public’ à la racine de notre application. Vous allez remarquer qu’à la ligne 47, Zf2 appelle une variable :

la valeur de cette variable, est le code html rendu des autres templates selon l’action demandé.

– La template ‘view/error/404.phtml’, de notre module :

les valeurs de parametre ‘raison’, se sont des constants de zf2, qui définissent chaque message d’erreur.

– La template ‘view/error/index.phtml’ :

Si tout ce passe bien, et vous réactualisez la page,  elle s’affichera sans problème.

d) Le model Contact

Plusieurs composants du framework permettent d’implémenter la logique métier:

  •  Une approche est d’avoir des classes Model représentant chaque entités de votre application puis d’utiliser des objets de mapping pour charger et enregistrer les entités dans la base de données: cette approche implémente le design pattern Table Data Gateway.
  • Une autre approche est d’utiliser un ORM, tel Doctrine ou Propel.

Nous utiliserons donc la première approche. Nous allons créer une classe ContactTable dans le dossier Model, étendant Zend\Db\TableGateway\TableGateway. Chaque objet sera un objet Contact (appelé aussi Entité). Pour le moment, on va utiliser une classe abstraire AbstractTableGateway, que la classe TableGateway l’etend. Et pour que notre classe Model ‘Contact’ fonctionne sans probléme avec cette classe abstraire, nous devons déclarer une fonction ExchangeArray(). Cette fonction copie simplement les données passées en tableau vers les propriétés de notre entité ‘Contact’. Le code source de notre model ‘Contact’ :

On doit créer une autre classe qui a le nom sous forme ModelNameTable ( ContactTable ),  c’est avec cette classe qu’on pourrai communiquer avec la table ‘contact’ , d’ailleurs c’est cette classe qui va étendre la classe abstraire AbstractTableGateway.

Le code source de la classe ContactTable :

Et pour être sur qu’on utilise une seule et même instance de notre model ‘ContactTable’, à l’exécution de notre application, selon le design pattern ‘Table Data Gateway’, on doit auto-charger l’instance de notre model, nous allons utiliser le ServiceManager pour définir la création de cette instance, on va implémenter une méthode appelée getServiceConfig() dans le fichier ‘Module.php’, qui est automatiquement appelée par le ModuleManger et appliquée au ServiceManager . Nous serons alors capables de retrouver cette instance dans notre controleur lorsque nous en aurons besoin. Il faut ajouter la methode getServiceConfig() aprés les 2 autres methodes ( getConfig(), getAutoloaderConfig() ) :

Vous voyez bien , qu’au moment qu’on fait appel au ServiceManager ‘Contact\Model\ContactTable’, on aura automatiquement une instance de la classe ContactTable, qui elle méme initialise le model Contact (voir le constructeur de la classe ContactTable ).

ooooohh, c’est 5h00 du matin,

La partie 4 de ce tutoriel est terminée.
A la prochaine partie 🙂
je vais dormir :), A demain.

Zend Framework 2
Share this Story:
  • facebook
  • twitter
  • gplus
khalid

About khalid

Leave a comment

Comment