Layout et connexion à une base avec Zend
Notion fondamentale de zend framework, nous allons voir dans cet article comment organiser le contenu de nos pages avec l’utilisation des layouts. Nous allons aussi faire une première approche de Zend_Db, la classe de zend qui manipule la base de données.
Les layouts
Dans cet article, nous allons reprendre le code source du tutoriel précédent.
Pour éviter d’avoir à recopier les mêmes morceaux de code pour chaque page, il est important de bien savoir structurer nos pages (définir une entête,un corps, un pied de page …). Avec Zend cette organisation se fait à travers les layouts.
// setup controller
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setControllerDirectory('./application/controllers');
// on définit le chemin des layouts
$aOptions = array(
'layout' => 'home',
'layoutPath' => './application/layouts'
);
Zend_Layout::startMvc($aOptions);
Zend_Layout::startMvc($aOptions);
Démarre le layout en prenant les options en paramètre.
Dans les options :
layoutPath => le chemin où seront stockés les layouts
layout => le nom du layout
Vous l’aurez compris, nous allons créer un dossier layouts dans notre dossier application où seront stockés nos layouts. Voici notre nouvelle arborescence :
zenfacile => application => layouts => home.phtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title><?php echo $this->title; ?></title>
</head>
<body>
<div id="content">
<h1><?php echo $this->welcome; ?></h1>
<?php echo $this->layout()->content; ?>
</div>
</body>
</html>
$this->layout()->content; sera le contenu de nos pages.
Nous allons retourner dans notre contrôleur principal.
zenfacile => application => controllers => IndexControler.php
class IndexController extends Zend_Controller_Action
{
function indexAction()
{
$this->view->title = "Mes amis";
$this->view->welcome = "Bienvenue";
}
Le rendu n’est pas super, mais ça au moins le mérite de montrer que ça marche.
La base de données avec Zend_Db
Pour se connecter à la base de données, il faut bien naturellement indiquer les identifiants de connexions.
Avec Zend, on passe par un fichier de configuration ini.
zenfacile => index.php
Zend_Loader::registerAutoload();
//on définit un nouvel objet de configuration
$oConfig = new Zend_Config_Ini('./application/config.ini', 'connexion');
// Mise en place de la BDD
$oDb = Zend_Db::factory($oConfig->db);
// on définit notre objet de base de données par défaut
Zend_Db_Table::setDefaultAdapter($oDb);
new Zend_Config_Ini(le chemin de notre fichier ini, la section concerner);
zenfacile => application => config.ini
[connexion]
db.adapter = PDO_MYSQL
db.params.host = localhost
db.params.username = root
db.params.password =
db.params.dbname = zendfacile
Nous allons créer la base de donnée, voici la table :
CREATE TABLE ami ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY , nom VARCHAR( 255 ) NOT NULL , prenom VARCHAR( 255 ) NOT NULL )
Les données :
INSERT INTO zendfacile.ami (id ,nom ,prenom) VALUES (NULL , 'Laporte', 'Jean'); INSERT INTO zendfacile.ami (id ,nom ,prenom) VALUES (NULL , 'LaPie', 'Marie');
Maintenant que notre base est faite, on va s’attaquer au code
zenfacile => application => controllers => IndexControler.php
class IndexController extends Zend_Controller_Action
{
function indexAction()
{
$this->view->title = "Mes amis";
$this->view->welcome = "Bienvenue";
$oAmi = new Ami();
$this->view->ami = $oAmi->fetchAll();
}
$oAmi = new Ami();
va faire appel au modéle ami. On l’a pas créé ?
j’allais l’oublier
zenfacile => application => models=> Ami.php
class Ami extends Zend_Db_Table
{
protected $_name = 'ami';
}
On a plus qu’à afficher notre résultat :
<table> <tr> <th>Nom</th> <th>Prenom</th> <th>&amp;amp;amp;amp;nbsp;</th> </tr> <?php foreach($this->ami as $ami) : ?> <tr> <td><?php echo $ami->nom;?></td> <td><?php echo $ami->prenom;?></td> </tr> <?php endforeach; ?> </table>
C’est pas beau, mais on a ce que l’on a demandé
:
Voici le pack complet qui regroupe tout le code source fonctionnel
Voilà une première mise en bouche des possibilités de Zend, dans les prochains articles nous irons plus loin dans l’univers de ZEND.







juillet 25th, 2009 at 18 h 07 min
Simple et efficace, bravo. On attend la suite.
novembre 16th, 2009 at 0 h 31 min
site en construction, merci de votre aide
j’aimerai aussi faire un formulaire d’inscription avec zend pour accéder à mon site si vous avez un tuto simple et efficace et comment incorporer ce formulaire dans mon site.
merci beaucoup.