Layout et connexion à une base avec Zend

Layout et connexion à une base avec Zend

sommaire :

  1. Les layouts
  2. La base de données avec Zend_Db
 

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 :

layouts zend

layouts zend


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.

zend layout

zend layout

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;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é :) :

Zend_Db

Zend_Db


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.

Note de l'article




1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, moyenne: 3,00 max : 5)
Loading ... Loading ...

  1. passepied Says:

    Simple et efficace, bravo. On attend la suite.

  2. amine Says:

    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.

Donner votre avis :