Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Ayant entamé la migration d'un portail vers Zend, j'ai une question pour laquelle je suis surpris de ne pas trouver de réponse.
Des blocs sont souvent identiques d'une page à l'autre sur un portail.
Par exemple, je souhaite créer un fil d'actualités sur le côté : un endroit est réservé dans le layout à cet effet.
En revanche, l'affichage du bloc dépend du layout. En d'autres termes, certaines pages affichent ce bloc, d'autres non.
Je n'ai pas trouvé d'autre moyen pour le moment que d'inclure dans chaque action de chaque controller concerné un appel vers la fonction qui fetch les dernières actus et qui l'envoie à la vue qui l envoie au "partial".
C'est trop alambiqué à mon gout, et j'imagine qu'il existe une manière plus simple de faire ?
PS : désolé si le sujet du topic n'est pas clair, j'ai pas trouvé mieux...
Hors ligne
je débute avec zend, mais si j'ai cerné ton problème tu voudrais afficher ton bloque d'actualité qu'une seule fois et à partir de ton layout.
Pour cela créer toi un helper qui au aura pour but d'afficher les dernières actualités.
Hors ligne
Salut
J'ai été regarder du côté de la doc sur "view helper" et "action helper", je ne comprends pas bien en quoi ca peut résoudre le problème (j'ai pu rater qq chose).
Mon souhait est de pouvoir générer mon bloc actualités sans à chaque fois rappeler dans l'action du controller pour le passer à la vue.
Je voudrais pouvoir appeler le bloc dans la vue via partial, et que la génération de la requete etc soit faite de manière automatique.
Hors ligne
ben les aides de vues te permettent de faire ceci.
Dans ton layout tu n'auras qu'à indiquer $this->actualite() par exemple. Et c'est dans ton script de ton helper que tu fais retourner ce que tu veux. Donc ici le resultat d'une requete soit les 5 dernieres actualités.
fichier Actualite.php
<?php
class Zend_View_Helper_Actualite extends Zend_View_Helper_Abstract {
public function actualite() {
// ton traitement
}
}
ce fichier dans mon arborescence ce trouve:
/application
->/views
->->/helpers
->->->Actualite.php
et dans mon bootstrap j'ai ceci:
protected function _initView()
{
// Initialisation de la vue et des helpers de vue
$view = new Zend_View();
$view->doctype('XHTML1_STRICT');
$view->headTitle('titre');
// On ajoute le dossier des helpers
$view->addHelperPath(APPLICATION_PATH . '/views/helpers');
// On charge l'helper qui va se charger de la vue
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
$viewRenderer->setView($view);
return $view;
}
voilou je sais pas si cela pourra t'aider, dis moi quoi si tu as des soucis.
Hors ligne
Salut,
Ca m'a l'air d'être ce dont j'ai besoin.
Je te remercie !!
Je teste ca et reviendrai par ici ensuite
Hors ligne
$this->action($module, $controller, $action, array('nomparam' => $param1, ...)) est ton ami
c'est une aide de vue qui fait déjà sa et elle est intégrée à Zend.
Hors ligne
@lesdoudou :
Effectivement tu peux mutualiser des traitements avec des aides de vues, mais dans ton cas, je pense que le plus adapté c'est d'utiliser la conjonction de 2 éléments : Zend_Layout et les ActionStack :
Zend_Layout : ça divise ta page en plusieurs zones. Tu peux avoir plusieurs layouts et choisir ton layout en fonction de la page demandée (ce qui te permet de supprimer ton bloc de news en cas de besoin)
http://framework.zend.com/manual/en/zend.layout.html
Les ActionStack sont des Plugins et Helpers (pas de vue, des helpers d'action) qui te permettent de lancer plusieurs actions dans une seule page (et donc notamment de lancer l'action nécessaire pour afficher un bloc donné de ton layout).
La doc pour les actionstack est un peu répartie partout dans la doc :
http://framework.zend.com/manual/1.10/e … ctionstack
http://framework.zend.com/manual/1.10/e … ctionstack
A+, Philippe
Hors ligne