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.
août 3rd, 2010 at 20 h 44 min
[...] : Communauté Francophone - Présentation du Zend Framework - Débuter avec Zend Framework 1.5 - Layout et connexion à une base avec Zend - Une approche de Zend Framework 1.7 - Manuel de documentation de Zend en français v1.10.7 [...]
août 27th, 2010 at 2 h 11 min
Formidable tutoriel mais je n’ai pas bien saisie la fin:
dans quel fichier on ajoute:
02.
03. Nom
04. Prenom
05. &amp;amp;amp;nbsp;
06.
07.
08.ami as $ami) : ?>
09.
10. nom;?>
11. prenom;?>
12.
13.
14.
15.
Merci