Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
bonjour ,
je travail sur un projet avec zend et je voulai bien travailler avec les frameset dans l'interface web , pour cela j'ai definit dans mon layout le code suivant :
<frameset rows="105,*,100" border="0" > <frame name="haut" src="/TecTrace/application/default/layouts/header.phtml" scrolling="no"> <frameset cols="*,350"> <frame name="gauche" src="/TecTrace/application/default/layouts/map.phtml" scrolling="no"> <frame name="droite" src="/TecTrace/application/default/layouts/menu.phtml" scrolling="no"> </frameset> <frame name="bas" src="/TecTrace/application/default/layouts/footer.phtml" scrolling="no"> </frameset><noframes></noframes>
mon problème c'est quand j'envoi des données de mon controlleur vers les vues j'arrive pas a les récupérer
exemple dans l'action index d'un contrôlleur :
.. $this->view->message ="Hello world " ; ..
dans la page header.phtml je met :
<?php echo $this->message ?>
une erreur c affiicher dans la page :
Fatal error: Using $this when not in object context in F:\Projects\XXX\TecTrace\application\default\layouts\header.phtml on line 7
donc c'est un problème de récupération de données !!
Esq ya t'il un moyen de régler ce problème ?
merci .
Dernière modification par mega_info (01-09-2008 00:43:35)
Hors ligne
$this->view->message ="Hello world " ;
me semble plus approprié
pour la fatal error et bien si tu l'a encore c'est que le soucis viens d'ailler et dans ce cas la je ne sait pas trop.
Dernière modification par lethak (31-08-2008 18:04:08)
Hors ligne
merci lethak de me répondre ,
c vrai , je me suis tremper dans dans l'écriture du code dans la dissucution ,
j'ai eu on la même erruer fatal ,
j'ai besoin de votre aides les amis , si quelqu'un a eu déja ce problème ou toute proposition pour une solution sera la bien-venue .
merci encore .
Hors ligne
Rien d'anormal a ce que ca plante.
tu appeles directement ta vue dans ton frameset
<frame name="haut" src="/TecTrace/application/default/layouts/header.phtml" scrolling="no">
Ton code est donc appelé hors contexte (hors pattern MVC) donc le moteur PHP ne sait pas a qui attribuer le $this. Appel une action qui gere le header et tu devrais voir que ca doit marcher.
Hors ligne
ndesaleux a écrit:
Rien d'anormal a ce que ca plante.
tu appeles directement ta vue dans ton framesetCode:
<frame name="haut" src="/TecTrace/application/default/layouts/header.phtml" scrolling="no">Ton code est donc appelé hors contexte (hors pattern MVC) donc le moteur PHP ne sait pas a qui attribuer le $this. Appel une action qui gere le header et tu devrais voir que ca doit marcher.
ha oui exact !
et puis les frameset c'est vraiment le mal ! a éviter le plus possible
Hors ligne
bonjour a tout , merci pour vos réponces .
je vien de régler le problème , et je v répond aussi a vos proposition aussi :
--> ndesaleux : si je fait appel directement mes vue dans mon frameset je pourrai plus récupérer les données que je transefert a partir de mon contrôleur vers les vues . ( l'appel avec $this ne va pas marché car les vue ne seront plus des vues de zend )
--> lethak : j vraiment besoin d'utiliser les frameset afin d'optimiser l'affichage et le rendu des pages , donc il falai que je trouve la source de problème .
la solution : c'est une solution un peut bête que j'ai pas pensé a ça :
dans le layout :
<frame name="haut" src="<?php echo $this->url(array('controller'=>'index','action'=>'header'));?>" scrolling="no"> <frameset cols="*,350"> <frame name="gauche" src="<?php echo $this->url(array('controller'=>'index','action'=>'map'));?>" scrolling="no"> <frame name="droite" src="<?php echo $this->url(array('controller'=>'index','action'=>'menu'));?>" scrolling="no"> </frameset> <frame name="bas" src="<?php echo $this->url(array('controller'=>'index','action'=>'footer'));?>" scrolling="no"> </frameset><noframes></noframes> </html>
et je définit dans mon contrôleur les action qui font le rendu des différents parties de la page :
public function headerAction () { $this->view->message= 'Hello world'; $this->_helper->layout->disableLayout(); $this->render("template/header",null,true); return; } public function footerAction () { $this->_helper->layout->disableLayout(); $this->render("template/footer",null,true); return; } public function mapAction () { $this->_helper->layout->disableLayout(); $this->render("template/map",null,true); return; } public function menuAction () { $this->_helper->layout->disableLayout(); $this->render("layouts/menu",null,true); return; }
- comme sa je peut récupérer la variable message dans le vue header sans aucun problème .
merci a tout .
Dernière modification par mega_info (01-09-2008 10:47:05)
Hors ligne