Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-09-2008 08:28:46

deviltaz
Membre
Date d'inscription: 09-09-2008
Messages: 37

[Résolu][Zend_Layout][ZF 1.5.3]Soucis de conception pour un débutant

Bonjour,

je cherche à mettre en place un squelette d'application
et malgré la lecture de nombreux tutoriels, je m'embrouille.

La structure souhaitée pour mon application serait celle-ci :

- header commun
- menu de navigation commun (permettant de naviguer entre les sections du site)
- gauche : menu spécifique à chaque section
- droite : contenu spécifique à chaque page
- footer commun

Je pense pas que cela soit si compliqué que ça.
Par avance merci de votre soutien.

Dernière modification par deviltaz (10-09-2008 07:52:25)

Hors ligne

 

#2 09-09-2008 10:19:04

Damien
Membre
Lieu: Tassin la Demi Lune
Date d'inscription: 22-03-2007
Messages: 88

Re: [Résolu][Zend_Layout][ZF 1.5.3]Soucis de conception pour un débutant

Il me semble que l'utilisation de Zend_Layout est appropriée pour ton cas.

Ton layout pourrait ressembler à ça (je ne met pas l'entête html):

Code:

<div id="entete"><?php print $this->action("entete", "index"); ?></div>
<div id="navig"><?php print $this->action("navig", "index"); ?></div>
<div id="menugauche"><?php print $this->layout()->menugauche; ?></div>
<div id="contenu"><?php print $this->layout()->contenu; ?></div>
<div id="footer"><?php print $this->action("footer", "index"); ?></div>

Pour de plus amples renseignements concernant $this->action, http://framework.zend.com/manual/fr/zen … ial.action

Hors ligne

 

#3 09-09-2008 10:39:07

deviltaz
Membre
Date d'inscription: 09-09-2008
Messages: 37

Re: [Résolu][Zend_Layout][ZF 1.5.3]Soucis de conception pour un débutant

Merci de cette réponse.

Je pense que je m'étais trop dispersé entre plusieurs méthodes
et divers tutoriels. Je me suis donc recentré sur la lecture du tutoriel
de Julien Pauli proposé sur developpez.com

Je parviens à mettre en pratique la méthode $this->action.
Si je ne m'abuse, c'est ce qu'on apelle un ActionHelper ?
C'est pour moi une première victoire et cela me solutionne
tout ce qui est commun à l'ensemble des pages, ouf !

Je continue d'étudier le tutoriel pour ce qui est des parties
contrôlées par différentes sections du site, soit la syntaxe :

Code:

$this->layout()->menuGauche

Je crois avoir compris que je devrais alors employer la méthode suivante dans l'action :

Code:

$this->_helper->viewRenderer->setResponseSegment('menuGauche');

Je file de ce pas mettre cela en pratique big_smile

Hors ligne

 

#4 09-09-2008 10:41:28

Damien
Membre
Lieu: Tassin la Demi Lune
Date d'inscription: 22-03-2007
Messages: 88

Re: [Résolu][Zend_Layout][ZF 1.5.3]Soucis de conception pour un débutant

oui ou alors $this->render("mavue", "menugauche");

avec mavue qui correspond à un fichier mavue.phtml

Dernière modification par Damien (09-09-2008 10:42:00)

Hors ligne

 

#5 09-09-2008 11:06:56

deviltaz
Membre
Date d'inscription: 09-09-2008
Messages: 37

Re: [Résolu][Zend_Layout][ZF 1.5.3]Soucis de conception pour un débutant

Il doit vraiment me manquer quelque chose ...?

Je vous résume ce que j'ai pour l'instant :
Dans le layout :

Code:

<?php echo $this->action('header', 'index'); ?>
<?php echo $this->action('nav', 'index'); ?>

<div id="left">
<?php echo $this->layout()->left ?>
</div>

<div id="content">
<?php echo $this->layout()->content ?>
</div>

<?php echo $this->action('footer', 'index'); ?>

Les parties apellées via $this->action fonctionnent très bien.
En revanche, ça se complique pour layout()->left et layout()->content.

Au niveau du controleur, j'ai ajouté à mes deux actions ceci :
$this->_helper->viewRenderer->setResponseSegment('left');
ou bien
$this->render('left', 'left');

Dans les deux cas, left et content restent muets dans le fichier résultant.

Hors ligne

 

#6 09-09-2008 11:41:25

deviltaz
Membre
Date d'inscription: 09-09-2008
Messages: 37

Re: [Résolu][Zend_Layout][ZF 1.5.3]Soucis de conception pour un débutant

Ca bouge ...

Je parviens à obtenir le résultat tant attendu.
En fait, je suppose que je ne placais pas la commande $this->render au bon endroit.

J'ai déplacé le code ci-dessous dans l'action index du controleur
et cette fois-ci, c'est opérationnel.

Code:

$this->render('left', 'left');

Je suis déjà satisfait de mon application ;-)

Pensez-vous qu'il s'agisse de bonnes pratiques, voyez-vous des améliorations possibles ?

Merci en tout cas d'avoir permis de faire avancer le schmilblick.

Hors ligne

 

#7 09-09-2008 11:43:49

Damien
Membre
Lieu: Tassin la Demi Lune
Date d'inscription: 22-03-2007
Messages: 88

Re: [Résolu][Zend_Layout][ZF 1.5.3]Soucis de conception pour un débutant

En effet, le $this->render(...) se place dans les actions du controller. J'avais oublié de le préciser. smile

Hors ligne

 

#8 09-09-2008 13:49:35

deviltaz
Membre
Date d'inscription: 09-09-2008
Messages: 37

Re: [Résolu][Zend_Layout][ZF 1.5.3]Soucis de conception pour un débutant

Pour aller plus loin ...

En utilisant cette méthode, pour chacune des sections de mon appli
je me retrouve à coder ces deux lignes pour chaque action :

Code:

$this->render('action', 'right');
$this->render('menu', 'left');

N'y aurait-il pas plus élégant ?

Hors ligne

 

#9 09-09-2008 14:46:46

Damien
Membre
Lieu: Tassin la Demi Lune
Date d'inscription: 22-03-2007
Messages: 88

Re: [Résolu][Zend_Layout][ZF 1.5.3]Soucis de conception pour un débutant

Il faut pour cela écrire ton propre controller dérivé de Zend_Controller.

Code:

class My_Zend_Controller extends Zend_Controller {
    public function postDispatch() {
        $this->render('action', 'right');
        $this->render('action', 'left');
    }
}

Plus d'informations ici : http://framework.zend.com/manual/fr/zen … ialization et le chapitre suivant.

Hors ligne

 

#10 09-09-2008 16:26:01

deviltaz
Membre
Date d'inscription: 09-09-2008
Messages: 37

Re: [Résolu][Zend_Layout][ZF 1.5.3]Soucis de conception pour un débutant

Merci beaucoup, c'est effectivement nettement plus propre avec cette méthode ;-)

Voici donc le code que j'utilise :

Code:

class monController extends Zend_Controller_Action
{
    public function postDispatch()
    {
        $this->render('menu', 'left');
    }
}

Dernière petite question d'un newbie :
Peut-on savoir dans cette fonction postDispatch() quelle action a été apellée ?
Cela me permettrait alors d'ajouter ceci :

$this->render($actionCalled, 'right');

D'avance merci

Hors ligne

 

#11 09-09-2008 16:45:45

Damien
Membre
Lieu: Tassin la Demi Lune
Date d'inscription: 22-03-2007
Messages: 88

Re: [Résolu][Zend_Layout][ZF 1.5.3]Soucis de conception pour un débutant

Le nom du module, du controlleur et de l'action sont connus par le request du controlleur.

Il est possible d'accéder à ces valeurs en faisant (dans le controlleur) :

Code:

$action = $this->getRequest()->getActionName();
$controller = $this->getRequest()->getControllerName();
$module = $this->getRequest()->getModuleName();

Un petit tour dans la documentation n'est pas inutile : http://framework.zend.com/manual/fr/zen … quest.html

Hors ligne

 

#12 10-09-2008 07:51:59

deviltaz
Membre
Date d'inscription: 09-09-2008
Messages: 37

Re: [Résolu][Zend_Layout][ZF 1.5.3]Soucis de conception pour un débutant

Merci de ces précisions.
Voilà mes problèmes de layout résolus et cette fois, je comprend ce que je fais ;-)

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