Objectifs

Si Copix est correctement installé avec une base de données configurée par défaut, il est temps de découvrir les DAO :-)

Note: DAO est l'acronyme de "Data Access Object".

L’objectif de ce tutoriel est de créer une page affichant une liste de nouvelles issues de la base de données.

Schéma de la table NEWS pour MySQL

Dans la base par défaut, créez la table NEWS.

CREATE TABLE news (
  news_id int(11) NOT NULL auto_increment,
  news_date varchar (8) NOT NULL default '00000000',
  news_sujet varchar(255) NOT NULL default '',
  news_texte text NOT NULL,
  PRIMARY KEY (news_id)
) CHARACTER SET utf8;

Implémentation de l'action

Nous allons développer dans le module "default" (project/modules/public/stable/standard/default) et créer un ActionGroup News dans le fichier project/modules/public/stable/standard/default/actiongroups/news.actiongroup.php.

Nous allons également implémenter la méthode processList pour répondre à l'url index.php/default/news/list.

<?php
/**
* Gestion de nouvelles
*/
class ActionGroupNews extends CopixActionGroup {
  /**
  * Pour afficher la liste des news à l’écran
  * index.php/default/news/list
  */
  function processList (){
     $ppo = new CopixPPO ();//création de l'objet pour transporter les données
     $ppo->TITLE_PAGE = 'Liste des nouvelles';//On donne un titre à la page avec la variable spéciale TITLE_PAGE
     $ppo->arNews = _dao('news')->findAll ();//Copix est capable de dialoguer automatiquement avec une base MySQL (voir plus en détail les DAO dans la documentation)
     return _arPPO ($ppo, 'news.list.tpl');//On demande l'affichage des données dans le template news.list.tpl
  }
}
?>

Note: _dao est une fonction raccourcis pour CopixDAOFactory::create. N'hésitez pas à consulter la documentation de ces fonctions pour économiser vos claviers !

Création du template

Voici le code du template Smarty utilisé pour afficher le tableau de news (à mettre dans project/modules/public/stable/standard/default/templates/news.list.tpl) :

{** * Template d’affichage d’une liste de news. * @param arNews - tableau d’objets News. *} {foreach from=$ppo->arNews item=objNews} {/foreach}
{$objNews->news_date} {$objNews->news_sujet} {$objNews->news_texte}