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édente | Prochaine révisionLes deux révisions suivantes | ||
tutoriels:principal:utiliser-dao [2008/02/13 20:49] – kuantor | tutoriels:principal:utiliser-dao [2008/04/23 12:44] – laurent | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Utiliser les DAOs ====== | ||
- | 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 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. | ||
- | |||
- | |||
- | |||
- | ---- | ||
- | * Suite : [[tutoriels: | ||
- | * Précedent : [[tutoriels: | ||
- | * [[tutoriels: |