Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-06-2008 13:33:36

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Zend layout - Comment gérer des parties du layout

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:

Code:

<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

 

#2 09-06-2008 14:27:30

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

Re: Zend layout - Comment gérer des parties du layout

Regarde du côté de la pile d'action et du rendu d'action dans un segment particulier
Ca devrait le faire wink

Hors ligne

 

#3 09-06-2008 15:18:47

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: Zend layout - Comment gérer des parties du layout

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 wink

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

 

#4 10-06-2008 13:39:09

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: Zend layout - Comment gérer des parties du layout

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 :

Code:

$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

 

#5 10-06-2008 14:08:15

or4cle
Membre
Date d'inscription: 18-02-2008
Messages: 70

Re: Zend layout - Comment gérer des parties du layout

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

 

#6 10-06-2008 14:11:10

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: Zend layout - Comment gérer des parties du layout

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

 

#7 10-06-2008 14:40:53

or4cle
Membre
Date d'inscription: 18-02-2008
Messages: 70

Re: Zend layout - Comment gérer des parties du layout

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

 

#8 10-06-2008 14:49:46

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: Zend layout - Comment gérer des parties du layout

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

 

#9 10-06-2008 15:59:43

or4cle
Membre
Date d'inscription: 18-02-2008
Messages: 70

Re: Zend layout - Comment gérer des parties du layout

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

 

#10 10-06-2008 16:12:35

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: Zend layout - Comment gérer des parties du layout

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

 

#11 11-06-2008 08:10:52

or4cle
Membre
Date d'inscription: 18-02-2008
Messages: 70

Re: Zend layout - Comment gérer des parties du layout

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

 

#12 11-06-2008 18:14:26

Elvis
Nouveau membre
Date d'inscription: 05-02-2008
Messages: 6

Re: Zend layout - Comment gérer des parties du layout

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

 

#13 11-06-2008 18:47:26

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: Zend layout - Comment gérer des parties du layout

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:

Code:

    public function indexAction() 
    { 
        
        
        $this->view->message = "test de message";
           
        $this->_helper->actionStack("bestSite", "bloc", null); 

    }

et voila mon bootstrap

Code:

/*************************************
    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

 

#14 12-06-2008 11:09:26

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: Zend layout - Comment gérer des parties du layout

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

 

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