Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-01-2011 13:44:14

Wiwiwi
Nouveau membre
Date d'inscription: 07-01-2011
Messages: 5

Conception d'un layout "dynamique"

Bonjour,

Je suis débutant et en plein apprentissage de Zend, je fais donc appel à votre indulgence sur des questions qui vous paraitrons assez basiques tongue.

Je parcours les pages de documentation et les forums depuis un petit moment, et je me rend compte que contrairement à ce que j'imaginais, les gens on souvent plusieurs manières de faire la même chose à l'aide du Framework.
Pour le moment je m'intéresse à la conception d'un layout pour mon site. Celui-ci contiendra surement des blocks variable, souvent dépendant du statut connecté ou non d'un utilisateur, comme un panneau de connexion remplacé par des info utilisateur si connecté, un menu plus complet pour les personnes identifiées etc...

Concrètement, quelle est la meilleurs manière d'avoir des blocks variables mais néanmoins récurent dans la structure de son site ? Cela passe-t-il par l'utilisation de placeholders ? aide d'actions ? partials ?...

Désolé si la réponse ce trouve déjà quelque part sur le site, j'ai du passé à coté hmm

Je vous remercie d'avance pour vos réponses !

Dernière modification par Wiwiwi (07-01-2011 13:44:36)

Hors ligne

 

#2 07-01-2011 14:44:30

ubini
Membre
Lieu: gillarens/Suisse
Date d'inscription: 23-01-2008
Messages: 110
Site web

Re: Conception d'un layout "dynamique"

moi je dirais partials dans des placesholders à première vue.

un de mes partials :

Code:

<?php $this->placeholder('sidebar-left')->captureStart() ?>
<div class="box-top-blue"><?php echo $this->translate($this->title)?></div>
<div class="box-bottom-blue">
    <div class="swaps-state">
        <span class="float-left">Etat actuel</span><span class="float-right"><?php echo $this->user->swaps; ?></span><br />
        <span class="float-left">Dépenses effectives</span><span class="float-right">– <?php echo $this->user->getSwapsPayableForTransactions(); ?></span>
    </div>
</div>
<?php $this->placeholder('sidebar-left')->captureEnd() ?>

ensuite dans le preDispatch() tu peux appeler ton partial quand désiré. C'est aussi là que tu décide s'il faut afficher le formulaire de login ou les infos de l'utilisateur loggé

Code:

    function preDispatch()
    {
        $this->view->partial('users/box/status.phtml',array(
                                        'title'=>'my_status_box',
                                        'user'=>$this->getUser()));
    }

dans le bootstrap j'annonce mon placeholder :

Code:

    protected function _initSidebars()
    {
        $this->bootstrap('View');
        $view = $this->getResource('View');
        $view->placeholder('sidebar-left')
             ->setPrefix("<div id=\"sidebar-left\" class=\"sidebar-left\">\n    <div class=\"sidebar-inline\">\n")
             ->setSeparator("</div>\n    <div class=\"sidebar-inline\">\n")
             ->setPostfix("</div>\n</div>");
    }

dans mon layout je ne veux pas que les sidebars s'affichent si elle sont vides :

Code:

<?php if ($this->placeholder('sidebar-left')->getValue()) : ?>
    <?php echo $this->placeholder('sidebar-left'); ?>
<?php endif; ?>

j'espère que cela t'aidera smile

Bonne chance et bienvenue dans la communauté ZF !

Dernière modification par ubini (07-01-2011 14:55:46)


http://www.easyswap.org - site d'échange de biens et de services conçu avec jQuery et Zend Framework
http://www.lambelet.net - mon blog perso et inutile

Hors ligne

 

#3 07-01-2011 15:23:30

Wiwiwi
Nouveau membre
Date d'inscription: 07-01-2011
Messages: 5

Re: Conception d'un layout "dynamique"

Ok cool ! J'ai recoupé avec d'autres infos obtenue sur le forum et j'y vois plus clair à présent. Merci pour ton aide !

Hors ligne

 

#4 14-01-2011 17:24:36

Wiwiwi
Nouveau membre
Date d'inscription: 07-01-2011
Messages: 5

Re: Conception d'un layout "dynamique"

Simple question, si je fait ce que tu m'as dit dans le preDispatch d'un plugin que je crée, est-ce que cela s'appliquera bien avant toutes les actions de tous les controllers (autrement dit avant le chargement de n'importe quelle page de mon site) ?

Hors ligne

 

#5 17-01-2011 16:32:18

ubini
Membre
Lieu: gillarens/Suisse
Date d'inscription: 23-01-2008
Messages: 110
Site web

Re: Conception d'un layout "dynamique"

oui, c'est le but smile

soit un preDispatch() par controlleur ou alors un preDispatch() générique si tu le mets dans la classe mère de ton controlleur (une surcharge du Zend_Controller_Action).

cf : http://www.z-f.fr/forum/viewtopic.php?id=5075#p26972


http://www.easyswap.org - site d'échange de biens et de services conçu avec jQuery et Zend Framework
http://www.lambelet.net - mon blog perso et inutile

Hors ligne

 

#6 20-01-2011 17:07:39

Wiwiwi
Nouveau membre
Date d'inscription: 07-01-2011
Messages: 5

Re: Conception d'un layout "dynamique"

J'ai finalement utilisé la méthode de création d'un nouveau plugin que j'ai mis dans "application/controllers/plugins/ConnexionPannel.php".

Je l'ai ensuite configuré comme tel :
autoloaderPluginPath = APPLICATION_PATH "/controllers/plugins"
resources.frontController.plugin.ConnexionPannel = "ConnexionPannel"

Pas d'erreur, je suppose donc qu'il a bien été chargé, mais comment en être sur (quel test effectuer dans le preDispatch par exemple ?).

Ensuite j'ai fait comme tu m'avais dit. J'arrive à afficher mon placeholder en enlevant les conditions (il est donc vide), par contre impossible de capturer mon partial à l'intérieur. Soit a cause du plugin qui n'a pas été chargé, soit à cause du chemin vers mon partial qui n'est pas bon.

A partir de la méthode $this->view->partial(), quel est le chemin vers mon partial sachant que j'ai placé celui ci dans "application/views/partials/connexionPannel.phtml" ?

En tout cas merci pour tes réponses qui jusqu'ici m'ont permis d'en apprendre un peu plus sur Zend !

EDIT : Bon apparement, il serait plus simple de créer un héritage intermédiaire entre mes controllers et Zend_Controller_Action pour l'utilisation de l'objet $view dans le preDispatch, mais impossible de trouver quoi mettre derrière le mot clé "extends" pour retrouver mon controller intérmédiaire...
En le mettant dans "application/controllers", quel est sont chemin "Perl" pour le retrouver ?

Dernière modification par Wiwiwi (20-01-2011 19:27:39)

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