35.2. Scripts de contrôleur

Le contrôleur est l'endroit où vous instantiez et configurez Zend_View. Vous assignez ensuite des variables à la vue, et lui dites comment effectuer la sortie en utilisant un script particulier.

35.2.1. Assigner des variables

Votre script de contrôleur devrait assigner les variables nécessaires à la vue avant de passer le contrôle au script de vue. Normalement vous pouvez faire des assignations une par une en assignant les noms des propriétés de l'instance de la vue :

<?php
$view = new Zend_View();
$view->a = "Ha";
$view->b = "Bé";
$view->c = "Cé";
?>
        

Cependant, ceci peut être pénible quand vous avez déjà collecté (dans un tableau ou dans un objet) les valeurs à assigner.

La méthode assign() vous laisse assigner "en vrac" depuis un tableau ou un objet. Les exemples suivants ont le même effet que celui ci-dessus.

<?php
$view = new Zend_View();

// assigne un tableau de paires clés/valeurs, où la clé
// est le nom de la variable, et la valeur, sa valeur assignée
$array = array(
    'a' => "Ha",
    'b' => "Bé",
    'c' => "Cé",
);
$view->assign($array);

// fait pareil avec les propriétés publiques d'un objet
// notez le transtypage lors de l'assignation
$obj = new StdClass;
$obj->a = "Ha";
$obj->b = "Bé";
$obj->c = "Cé";
$view->assign((array) $obj);
?>
        

Alternativement, vous pouvez utiliser la méthode assign() pour assigner les variables une par une, en passant le nom de la variable, et sa valeur.

<?php
$view = new Zend_View();
$view->assign('a', "Ha");
$view->assign('b', "Bé");
$view->assign('c', "Cé");
?>
        

35.2.2. Effectuer le rendu d'un script de vue

Une fois que vous avez assigné toutes les variables dont vous aviez besoin, le contrôleur devrait demander à Zend_View de rendre un script de vue particulier. Faites cela en appelant la méthode render(). Notez que la méthode va retourner la vue rendue, mais ne va pas l'afficher, vous devez donc l'afficher avec print ou echo vous même, au moment voulu.

<?php
$view = new Zend_View();
$view->a = "Ha";
$view->b = "Bé";
$view->c = "Cé";
echo $view->render('uneVue.php');
?>
        

35.2.3. Chemin des scripts de vue

Par défaut, Zend_View attend que vos scripts de vues soient dans le même dossier que le celui du contrôleur. Par exemple, si le script du contrôleur est dans "/chemin/des/controleurs" et qu'il appelle $view->render('uneVue.php'), Zend_View va rechercher "/chemin/des/controleurs/uneVue.php"

Evidemment, vos script sont peut-être localisé ailleurs. Pour dire à Zend_View ou il doit chercher, utilisez la méthode setScriptPath().

<?php
$view = new Zend_View();
$view->setScriptPath('/chemin/des/vues');
?>
        

Maintenant, vous appelez $view->render('uneVue.php'), il va rechercher dans "/chemin/des/vues/uneVue.php".

En fait, vous pouvez "empiler" les chemins en utilisant la méthode setScriptPath(). Comme vous ajoutez des chemins dans la pile, Zend_View va rechercher le script de vue dans le le chemin le plus récemment ajouté. Cela vous permet de passer outre les vues par défaut, pour des vues personnalisées. Ainsi vous pouvez créer des "thèmes" ou des "skins" pour certaines vues, pendant que vous laissez les autres intactes.

<?php
$view = new Zend_View();
$view->addScriptPath('/chemin/des/vues');
$view->addScriptPath('/chemin/des/vues-personnalisees');

// maintenant, lorsque vous appelerez $view->render('booklist.php'),
// Zend_View va rechercher en premier dans "/chemin/des/vues-personnalisees/booklist.php", puis
// dans "/chemin/des/vues/booklist.php", et ensuite dans le répertoire courant
// pour trouver le fichier &quot;booklist.php&quot;.
?>