Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
débutant sur Zend, j'ai définis une architecture MVC et je souhaite utilisez la gestion de template avec zend layout.
voila mon template:
<body> <? echo $this->action('top','layout'); ?> <div id="content"> <div id="menu"> <?php echo $this->layout()->menu; ?> </div> <div id="main"> <div id="sidebar_left"> <?php echo $this->layout()->sidebarLeft; ?> </div> <div id="content"> <?php echo $this->layout()->content ?> </div> <div id="sidebar_right"> <?php echo $this->layout()->sidebarRight; ?> </div> </div> <?php echo $this->action('footer','layout') ?> </div> </body>
je souhaite initialiser sidebarLeft et sidebarRight avec différents blocs html (des blocs qui nécessitent des appels à la BDD) et bien sur ces blocs pourront recevoir des paramètres.
Exemple: afficher dans sidebarLeft un bloc avec 2 pubs du type X et un bloc avec 5 pubs du type y
Idéalement ces blocs serait d'une part définis par défaut puis modifiable au besoin par les classes controlleurs en question
je ne sais pas trop comment gérer cela, pouvez vous me conseiller sur la façon d'organiser mon code ?
D'avance merci
Hors ligne
Regarde du côté de la pile d'action et du rendu d'action dans un segment particulier
Ca devrait le faire
Hors ligne
Mr.MoOx a écrit:
Regarde du côté de la pile d'action et du rendu d'action dans un segment particulier
Ca devrait le faire
bon je sais que j'abuse mais bon je demande quand meme.
Pourrais tu me donner un exemple ?
En reprenant mon cas, ou dois je initialiser la sidebarLeft par défaut ? est ce dans mon layout Controlleur ? (je suppose que oui)
Et si je souhaite modifier son comportement, m'est il possible de le modifier depuis le controlleur appelé ?
je ne comprend pas trop l'utilité de la pile ?
qu'elle est son utilité par rapport à l'utilisation de $this->render(...) appelé plusieurs fois dans la même fonction.
N'est ce pas la même chose ?
Hors ligne
bon je fais suite à mon précédent message ...
J'ai fais un teste
je suis sur ma page d'accueil et je souhaiterais afficher différent bloc dans le contenu courant.
Certains de ces blocs serait réutilisable dans d'autres pages(Ex d'affichage en mode bloc http://www.kongregate.com/).
J'ai essayé d'appelé dans mon action index à la fin de la fonction l'un de ces blocs en faisant :
$this->_helper->actionStack("bestsite", "bloc");
et voila le message d'erreur que j'obtiens
Fatal error: Allowed memory size of 31457280 bytes exhausted (tried to allocate 14739163 bytes) in C:\wamp\www\projet\library\Zend\Debug.php on line 85
Donc soit je ne comprend pas bien l'utilité soit l'erreur vient d'ailleurs ....
Hors ligne
A priori, çà n'a pas de rapport avec le ZF cette erreur: http://www.google.fr/search?num=50& … DcountryFR
As-tu vérifié que ton script fonctionne seul, sans essayer de l'utiliser avec l'actionStack ?
Hors ligne
En fait je suis quasi certain que l erreur provient de l'actionStack car lorsque je met le code en commentaire celui ci fonctionne !!!!
Ou peut être que j'ai du mal à saisir son utilité !!!
Hors ligne
Dans ton action BlocControlleur::bestsiteAction(), met un echo tout con pour voir s'il apparait sans cette erreur.
Si c'est le cas, c'est que il y avait un souci dans ton code de bestsiteAction()
Sinon, en appelant bestsiteAction() sans passer par actionStack çà roule ?
Hors ligne
en mettant un echo le résultat est le meme.
et j'arrive à y accéder directement !!!
on est d'accord que le déroulement normale c'est d'avoir le contenu la vue généré par l'action bestSite à la suite du render courant ?
Hors ligne
Ok
En tout cas, essaye de débugé le problème de l'actionStack avec ton simple echo, çà évitera de se faire chier avec un autre problème qui se grefferait par dessus.
Je fais toujours mes : $this->_helper->actionStack('last-news','actualite','null',array( 'cat' => 'gle'));
en début d'action et ensuite le traitement de l'action mais je vois pas pourquoi çà poserais un souci de le faire après, tester avant, çà mange pas de pain.
Hors ligne
En fait tu avais raison. C'est bien une erreur php mais un peu bizarre.
J'utilise Wamp5 comme serveur apache, l'appel à l'actionStack fait comme un appel à une nouvelle page (enfin je crois) ce qui augmente la taille de la mémoire utilisé. Or il est configurer à 30MO et j'ai du le mettre à 60MO.
Est ce que tu as également du faire la modif ???
A présent j'ai un nouveau bug, snif snif.
J'utilise le Zend layout en modele MVC, et lorsque je fais appel à l'actionStack on me sort du template pour n'afficher que le rendu courant ....
bizarre, une idée ??
Hors ligne
On a besoin de changer cette config seulement si ces scripts sont trop volumineux ce qui est ton cas semble-t-il (si j'ai bien compris l'erreur que tu avais)
Tu l'as config correctement ton Zend_Layout dans le bootstrap ?
en suivant la doc, utiliser le layout n'est pas le truc le plus omplexe du ZF
Hors ligne
Pour info j'avais eu une erreur similaire sur un serveur dédié plutôt costaud, et le problème venait de mauvais appels à la méthode action dans mon layout.
Je dis mauvais, dans le sens où les actions / controlleurs que j'appelais n'étaient pas trouvés. C'était survenu suite à une mise à jour du framework.
Le problème concret se situait au niveau des noms de fichiers / noms de classes.
En espérant que ça pourra t'aider.
Hors ligne
je ne pense pas avoir des erreurs mais lors de l'appel à actionStack l'affichage de l'action bestSite du blocController vient bien s'ajouter à la suite du render courant mais je sors du contexte du layout.
voila mon code dans l'indexController:
public function indexAction() { $this->view->message = "test de message"; $this->_helper->actionStack("bestSite", "bloc", null); }
et voila mon bootstrap
/************************************* Initialisation du Front controller ***************************************/ $front = Zend_Controller_Front::getInstance(); $front->throwExceptions($config->debug->throwExeption); $front->setControllerDirectory('../application/controllers'); $front->setBaseUrl($config->www->baseurl); $front->registerPlugin(new Zend_Controller_Plugin_ErrorHandler(array( 'controller' => 'error', 'action' => 'display' ))); require_once 'util/route.php'; //Mise en place des define + URLs avec les registry // activation des layouts Zend_Layout::startMvc($config->layout); try{ $front->dispatch(); }catch (Exception $e){ exit($e->getMessage()); }
La question est pourquoi je sors du contexte courant ?????
Hors ligne
J'ai créer un nouveau post, afin de faire re-sortir au mieux mon pb.
http://www.z-f.fr/forum/viewtopic.php?pid=7862
Et encore un BIG THANKS à ceux qui se prennent le temps de répondre au Newbie
Hors ligne
Pages: 1