Piste :
Différences ¶
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
tutoriels:principal:utiliser-dao [2008/04/23 12:44] – laurent | fr:tutoriels:jelixnews:utiliser-dao [2009/11/19 11:39] – thomasandre | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | |||
+ | Jelix propose un système de mapping relationnel objet, jDao, basé sur le pattern DAO. | ||
+ | |||
+ | Le pattern DAO se base sur deux types d' | ||
+ | |||
+ | Concrètement avec jDao, un fichier XML DAO vous permet de définir un record et une factory, qui agiront sur une ou plusieurs tables en même temps. Vous y définissez donc le mapping : quel champs de la table ira dans quelle propriété du record, ainsi que le type de donnée, les clés, sur quelles tables s' | ||
+ | |||
+ | À partir de ce fichier, jDao génère à la volée deux classes basées respectivement sur jDaoRecordBase et jDaoFactoryBase (qui sont stockées dans un fichier PHP dans le cache de Jelix), | ||
+ | |||
+ | Dans le fichier XML de DAO, vous pouvez aussi définir vos propres méthodes d' | ||
+ | |||
+ | |||
+ | ===== Créer un premier DAO ===== | ||
+ | |||
+ | Vous disposez d'une commande pour créer un fichier DAO, basé sur une table existante. Elle a la syntaxe suivante : | ||
+ | |||
+ | | ||
+ | |||
+ | Nous avons précédemment créé une table news, et nous allons créer un DAO appelé " | ||
+ | |||
+ | <code bash> | ||
+ | php jelix.php [--NOM_APPLICATION] createdao news news news | ||
+ | </ | ||
+ | |||
+ | Vous obtenez alors un fichier **actu.org/ | ||
+ | |||
+ | Son contenu est le suivant : | ||
+ | <code xml> | ||
+ | <?xml version=" | ||
+ | <dao xmlns=" | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | C'est un contenu très simple, et bien sûr il existe d' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Lister les news ===== | ||
+ | |||
+ | Nous allons maintenant utiliser ce DAO pour récupérer la liste des news. Nous allons donc demander à jDao la factory de ce DAO, et appeler sa méthode **findAll** prédéfinie. Pour ce faire, on fait appel à jDao::get() : | ||
+ | |||
+ | <code php> | ||
+ | $fact = jDao:: | ||
+ | $liste = $fact-> | ||
+ | </ | ||
+ | |||
+ | En paramètre de jDao:: | ||
+ | |||
+ | En fait, il ne s'agit pas vraiment d'une liste, mais d'un objet jDbResultSet, | ||
+ | |||
+ | Intégrons ça dans notre contrôleur : | ||
+ | |||
+ | <code php> | ||
+ | function index() { | ||
+ | $rep = $this-> | ||
+ | $rep-> | ||
+ | $rep-> | ||
+ | |||
+ | $fact = jDao:: | ||
+ | $liste = $fact-> | ||
+ | |||
+ | $rep-> | ||
+ | |||
+ | return $rep; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Comme il a été dit précédemment, | ||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | < | ||
+ | {foreach $liste as $news} | ||
+ | <tr> | ||
+ | < | ||
+ | </tr> | ||
+ | {/foreach} | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Vous découvrez ici le tag de template {foreach}, qui fonctionne exactement comme le foreach php. Pour afficher des valeurs, il suffit de mettre le nom de la variable de template précédé par un //$//, et encadré par des accolades. | ||
+ | |||
+ | La liste renvoyée par //findAll// est une liste d' | ||
+ | |||
+ | Affichez à nouveau la page avec : | ||
+ | |||
+ | | ||
+ | |||
+ | Vous devriez voir la liste des news. | ||
+ | |||
+ | Remarque : si vous avez des problèmes d' | ||