IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

Activation d'un sous-menu par défaut


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Par défaut Activation d'un sous-menu par défaut
    Bonsoir,

    J'utilise Zend_Navigation pour gérer un menu composé de sous-menus.

    Comment faire pour activer un sous-menu par défaut quand on clique sur un lien du menu parent ?

    Par exemple, je clique sur le lien du menu 'B' (contrôleur : B / action : index) et je souhaite afficher la page par défaut 'B-a' (contrôleur : B / action : a)...

  2. #2
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Salut,

    Comme d'habitude, il ya plusieurs façons de faire, la pertinence du choix étant dictée par le contexte. Mais une façon simple et rapide de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class BController extends Zend_Controller_Action
    {
        public function indexAction()
        { $this->_forward('a'); }
     
        public aAction()
        { //ton code ; }
    }

  3. #3
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Par défaut
    Merci pour la réponse snafu. Cela ne fonctionne pas dans mon cas. Le contrôleur fonctionne de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    class BController extends Zend_Controller_Action
    {
    	public function indexAction()
    	{
    		// code mutualisé qui construit la page index.phtml
    	}
     
    	public aAction()
    	{
    		// code spécifique pour le sous-menu 'a'
    		$this->_forward('index');
    	}
     
     
    	public bAction()
    	{
    		// code spécifique pour le sous-menu 'b'
    		$this->_forward('index');
    	}
     
     
    	public cAction()
    	{
    		// code spécifique pour le sous-menu 'c'
    		$this->_forward('index');
    	}
    }
    Par ailleurs, ma navigation est définie de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <?xml version="1.0" encoding="UTF-8"?>
    <configdata>
    	<nav>
    		<A>
    			...
    		</A>
    		<B>
    			<controller>B</controller>
    			<pages>
    				<a>
    					<controller>B</controller>
    					<action>a</action>
    				</a>
    				<b>
    					<controller>B</controller>
    					<action>b</action>
    				</b>
    				<c>
    					<controller>B</controller>
    					<action>c</action>
    				</c>
    			</pages>
    		</B>
    		<C>
    			...
    		</C>
    	</nav>
    </configdata>
    Bref, quand j'arrive depuis http://site.com/B, malgré la construction de la page, la navigation du sous-menu ne se positionne pas sur l'action 'a' => le lien n'est pas actif. Et ça ne fonctionne pas mieux avec la définition d'une route spécifique.

    Vos idées sont les bienvenues !

  4. #4
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    J'aurais plutôt mis le code mutualisé dans une fonction init().
    Ainsi pas besoin de rediriger à chaque action, ce qui aurait le deuxième mérite d'être plus proche du fonctionnel.

  5. #5
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Par défaut
    En fait, le problème vient du forward qui conserve l'action initiale ('index' dans mon cas) alors que je souhaiterais que l'action forwardée ('a') soit assignée, sans quoi le menu généré via Zend_Navigation n'active pas le sous-menu considéré...

    Il doit bien exister une façon de faire quand même ?!

  6. #6
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Si le code commun peut être exécuté AVANT le code spécifique, alors tu déportes ce code dans une fonction inti() et tu annules les _forward().

    Si le code commun doit être exécuté après (donc dépendant de variables de l'action), j'opterais plutôt pour une aide d'action (voir la doc Zend).

Discussions similaires

  1. [CSS 3] Acroche du sous-menu par le pointeur lors de sa remontée
    Par Cver1 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 21/04/2012, 05h03
  2. Réponses: 5
    Dernier message: 13/01/2012, 17h28
  3. emplacement des sous menu par rapport aux menus principaux
    Par newmar dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 14/05/2008, 17h10
  4. TK : Configurer un sous-Menu par la suite
    Par Luciefer dans le forum Interfaces Graphiques
    Réponses: 0
    Dernier message: 23/07/2007, 09h58
  5. Menu déroulant valeur par défaut
    Par Gourouni dans le forum ASP
    Réponses: 11
    Dernier message: 06/12/2004, 16h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo