Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 22-02-2010 16:34:22

maryooman
Membre
Date d'inscription: 15-02-2010
Messages: 106

[Résolu]Afficher un sous menu en fonction du menu dans lequel je suis

Bonjour,

J'ai un menu simple horizontal  (Home, Country, User, Admin, ...).

Quand je clic sur un titre, j'arrive dans le contrôleur qui lui correspond et l'action index (c'est le fonctionnement standard).

Je souhaite à ce moment faire apparaitre le sous menu qui lui correspond.


1)
L'idée à été de le mettre dans la fonction init() du contrôleur

Code:

    public function init()
    {
        ?>
            <ul>
                <li>menu1</li>
                <li>menu2</li>
                <li>menu3</li>
            </ul>

        <?php
    }

Mais il apparait tout en haut de la page, avant l'affichage de la barre horizontal du menu, peut être même avant l'affichage du layout !!


2)
Autre solution, testé si on est bien dans tel ou tel contrôleur dans le layout :

Code:

if($this->_request->controller == "country") // afficher tel sous-menu

Mais dans le layout, la fonction : $this->_request->controlle ne semble pas fonctionner


Je suis à cours d'idées, qu'est ce que Zend à prévu dans ce genre de cas?

Dernière modification par maryooman (22-04-2010 09:54:29)

Hors ligne

 

#2 22-02-2010 18:47:30

nick
Membre
Date d'inscription: 31-05-2008
Messages: 84

Re: [Résolu]Afficher un sous menu en fonction du menu dans lequel je suis

ton controller n'est pas censé afficher du html

je crois que Zend_Navigator est fait pour gérer ce type de pb.

une piste possible qui ets tres simple, qui est valable si tu n'as pas bcp de pages: créer un array() pour chaque controller du genre

Code:

$this->view->submenu = array(
                          array("href" => $lien1, "label" => $label1),
                          array("href" => $lien2, "label" => $label2),
);

Ensuite dans ta vue tu fais un foreach sur ce tableau pour générer ton sous-menu

Hors ligne

 

#3 23-02-2010 03:59:18

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [Résolu]Afficher un sous menu en fonction du menu dans lequel je suis

Source de la solution ici: http://framework.zend.com/manual/fr/zen … lpers.html

Zend_Navigation va te permettre de faire ce que tu veux et en poussant encore plus loin. Au pire, ce que tu peux faire serait de mettre une condition dans ton layout pour afficher le menu selon le controlleur courant.

Hors ligne

 

#4 23-02-2010 08:40:22

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Résolu]Afficher un sous menu en fonction du menu dans lequel je suis

De mémoire, il y a une option du style "render active branch", sinon, tu fais un findOneByActive(true) pour récupérer le container et tu fais un rendu de celui-ci


----
Gruiiik !

Hors ligne

 

#5 23-02-2010 14:20:13

maryooman
Membre
Date d'inscription: 15-02-2010
Messages: 106

Re: [Résolu]Afficher un sous menu en fonction du menu dans lequel je suis

Merci de vos réponses,

J’ai trouvé ça pour le zend_navigator : c'est peu m'aider à démarrer : http://hienoa.net/web/2009/05/03/gettin … ple-steps/

nick : très bonne idée, mais j'ai pas mal de contrôleurs avec beaucoup d'action

probitaille : justement c'est l’option que je souhaitais, la 2eme, mais if($this->_request->controller == "country") ne fonctionne pas dans le layout (mais fonctionne dans un contrôleur)
S’il existe ce genre de fonction fonctionnant dans le layout je veux bien.

nORKy : je ne sais pas ce que c'est "render active brench", et un check rapide dans google ne m'aide pas
pour le findOneByActive(true) j'ai trouvé 2 résultats dans google : ce sujet (^^) et un lien pour celui là : http://www.zfforum.de/showthread.php?p=47336

Merci de vos précieux renseignements,
Je vais voir tout ça de mon coté.

A bientôt peut être !!

Hors ligne

 

#6 23-02-2010 14:37:08

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Résolu]Afficher un sous menu en fonction du menu dans lequel je suis

Eh, google c'est bien, mais aller directement dans la doc, du ZF, c'est mieux..
Ca ma pris même pas 1min : http://framework.zend.com/manual/en/zen … ation.menu


----
Gruiiik !

Hors ligne

 

#7 23-02-2010 22:55:04

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [Résolu]Afficher un sous menu en fonction du menu dans lequel je suis

Pour récupérer le nom du controller dans ton layout, tu peux envoyer le nom dans une variable à partir de ton controller:

Code:

class IndexController extends Zend_Controller_Action
{
    public function init()
    {
        $this->view->controller = $this->getRequest()->getControllerName();
        $this->view->action = $this->getRequest()->getActionName();
    }

Dans le layout:

Code:

 echo $this->controller;

Hors ligne

 

#8 24-02-2010 11:06:35

maryooman
Membre
Date d'inscription: 15-02-2010
Messages: 106

Re: [Résolu]Afficher un sous menu en fonction du menu dans lequel je suis

question simplicité dans l'immédiat, c'est l'option de probitaille que j'ai utilisé
merci!!!

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