Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 21-02-2008 23:22:16

kiminox
Membre
Date d'inscription: 15-01-2008
Messages: 37

[RESOLU][Zend_Layout][1.0.3][View]vue personnelle

Slt,

j'aimerais utiliser ma propre vue.
Pour cela, j'ai créé une classe MaVue, héritant de Zend_View_Abstract.
Puis je définis toutes mes méthodes de helpers (monText, monChekbox etc...) qui en fait héritent de FormText, FormCheckbox etc...Le but étant de les modifier par la suite pour mes besoins.
J'ai aussi une classe abstraite MonControllerAbstract qui étend Zend_Controller_Action. Dans ce controller, dans la méthode init, j'initialise ma vue personnelle : je définis les chemins nécessaires (scripts, helpers, views), ainsi que certains render(header), render(footer) etc... que j'ai ajouté à la vue, genre :

$this->view->menu = $this->view->render('menu.phtml');

Plus quelques membres communs (titre page etc...)
Je précise que j'utilise le Zend_Layout : dans ma méthode init, j'ai aussi :
$layout = Zend_Layout::getMvcInstance();
$this->view->addScriptPath($layout->getLayoutPath());
afin de pouvoir utiliser le layout principal dans lequel j'ai inclus les différentes parties de mon site :
layout.phtml :
<html>
etc...
<body>
etc...
<div id="menu">
<?php echo $this->menu; ?>
</div>
etc...

Au final, dans la méthode init() de mon controller MonControllerAbstract :
function init() {
// initialisation divers : chemin des helpers, views, scripts
$this->view = new MaVue();
$this->view->addFilterPath(....);
ect...
$layout = Zend_Layout::getMvcInstance();
$this->view->addScriptPath($layout->getLayoutPath());
etc...
}

tout cela me semble correct mais j'ai du oublié un truc : il m'affiche bien mon layout principal mais pas les sous-parties!
Du coup, j'ai une page avec pas grand chose...
Je sais plus quoi faire?!

Si j'enlève la partie où j'initialise ma vue, c'est à dire :
$this->view = new MaVue();
$this->view->addFilterPath(....);

tout marche!!
Avez vous une idée?

Yoong

PS : je précise que j'utilise des modules aussi
PSPS : je fait cela car je ne veux pas utiliser le Zend_Loader qui s'exécute à chaque fois qu'on fait un
$this->formText
par exemple dans une page .phtml.
Je veux pouvoir tout maitrise moi même : je souhaite donc définir tous les helpers que j'utilise dans ma classe vue personnelle : même si c'est plus lours, moi je préfère. (je viens de Java avec Struts SPRING et Hibernate...où on doit tout maitriser!)

Dernière modification par kiminox (23-02-2008 11:21:40)

Hors ligne

 

#2 22-02-2008 02:44:58

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [RESOLU][Zend_Layout][1.0.3][View]vue personnelle

Il faut précisé à Zend_Layout et/ou ViewRenderer la vue que tu utilises. faire $this->view = new MaVue(); ne suffit pas, il y'a a des méthodes appropriés.
Ou alors tu initialises t'as vue avant le dispatch() du front controller et la transmet à Zend_Layout.
Je crois que c'est comme ça pour le ViewRenderer, ça doit être pareille pour layout

Hors ligne

 

#3 23-02-2008 11:21:07

kiminox
Membre
Date d'inscription: 15-01-2008
Messages: 37

Re: [RESOLU][Zend_Layout][1.0.3][View]vue personnelle

Hé hé, bien vu Mr.MoOx!

en fait, après avoir posté ce pb, j'avais trouvé la réponse...comme quoi, le fait d'expliquer le pb m'a permis de mieux comprendre...mon problème!
En tout cas, je m'étais dit que cela pouvait avoir l'air compliqué comme message mais Mr.MoOx me prouve qu'il a compris!
C'était bien ça :
$layout = Zend_Layout::getMvcInstance();
$this->view->addScriptPath($layout->getLayoutPath());
$layout->view = $this->view;

et tout roule!
J'ai effectivement constater en mettant des Zend_Log de partout (oui oui de partout avec différents niveaux de détail bien sûr) que Zend_Layout (enregistré comme un plugin) utilise en effet sa vue interne : en fait, il recupere la vue du viewRenderer, instanciée par defaut. Donc, en lui indiquant ma propre vue, ben ça marche bien.
En espérant que cela aidera qqun.

Yoong

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages