Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-03-2009 11:10:46

Nikko
Membre
Lieu: Rueil (Haut-de-Seine)
Date d'inscription: 19-12-2008
Messages: 95

[Zend_Layout][1.6]Sous-menu

Bonjour à tous,

Je viens, une nouvelle fois, solliciter votre aide. Mon problème se porte sur la création de sous-menu.
Lorsque j'ai commencé Zend, on m'a fourni un livre : "Zend Framework : Bien développer en PHP" par Julien Pauli et Guillaume Ponçon. Ce livre survole, à mon goût, la partie Zend_Layout du framework et ne me permet pas d'avoir une compréhension suffisante pour pouvoir adapter le code à mon application.

Le bouquin explique qu'il faut déclarer le sous-menu dans la méthode init d'un controller. Dans mon application, le sous-menu peut-être appelé depuis plusieurs pages. Alors est-ce que je dois le déclarer dans chaque controller (par le biais d'un plugin ou autre forme, peu importe) ? En fait, j'ai une page avec un menu et lorsqu'on clique sur un lien du menu, on est automatiquement redirigé vers le premier lien du sous menu.

J'ai néanmoins essayé d'adapter le code du livre, et lorsque j'affiche ma page, j'ai cette erreur là :

Zend_Loader_PluginLoader_Exception: Plugin by name Link was not found in the registry

Qu'est-ce que cela signifie ? Que le plugin 'Link' n'a pas été trouvé ? Pourtant il n'a pas été créé dans le livre au moment des Layout

Pourriez-vous m'éclairer sur la marche à suivre quant à la création d'un sous menu ? Quelle est la différence entre $this->view->link() et $this->view->url() ?

En espérant avoir été clair, je vous remercie d'avance.

Nikko

Dernière modification par Nikko (25-03-2009 11:12:08)


Nikko

Etudiant en école d'ingénieur à l'INSIA

Hors ligne

 

#2 25-03-2009 11:32:46

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: [Zend_Layout][1.6]Sous-menu

+1 à ton message,

je suis dans la même situation que toi.

Je travaille aussi avec le livre de M. Pauli, et ce chapitre n'est pas très clair.

D'autant plus qu'il y a une faute à la page 92 :

on nous explique d'abord comment déclarer le menu dans reservationController::init()

puis ensuite comment le déclarer dans reservationController::init()

(alors que c'est pas plutot dans une vue ??)

Bref, malgrès les réponses apportées à mon topic(http://www.z-f.fr/forum/viewtopic.php?id=2809), je reste toujours autant dans le flou, et la réponse apportée (héritage d'un controlleur qui détient la fameuse methode init et son sous menu) ne semble pas fonctionner ou du moins je n'arrive pas à la faire fonctionner.

Quoiqu'il en soit les réponses que  l'on pourra t'apporter m'interresseront énormément.


Gostbuster - Développeur WEB

Hors ligne

 

#3 25-03-2009 11:37:37

Nikko
Membre
Lieu: Rueil (Haut-de-Seine)
Date d'inscription: 19-12-2008
Messages: 95

Re: [Zend_Layout][1.6]Sous-menu

En effet, j'ai également remarqué l'erreur. Le second "sous-titre" "Déclaration du sous-menu dans ReservationController::init()" devrait-être "Création du sous-menu dans views/scripts/common/submenut.phtml".

Cela me rassure de ne pas être le seul dans ce cas là.

Nikko


Nikko

Etudiant en école d'ingénieur à l'INSIA

Hors ligne

 

#4 25-03-2009 23:11:09

Intiilapa
Membre
Date d'inscription: 03-02-2009
Messages: 95

Re: [Zend_Layout][1.6]Sous-menu

Nikko a écrit:

Zend_Loader_PluginLoader_Exception: Plugin by name Link was not found in the registry

Pourriez-vous m'éclairer sur la marche à suivre quant à la création d'un sous menu ? Quelle est la différence entre $this->view->link() et $this->view->url() ?

Souvent, on rame à debug, car on ne lit pas les messages d'erreur. Le message d'erreur dit effectivement que le plugin Link n'a pas été trouvé. Il n'a pas été trouvé, car il n'existe pas ou il n'est pas là où on lui dit.

La différence entre $this->view->link() et $this->view->url() c'est que le premier n'existe pas au contraire du second. Lorsqu'on appelle une méthode à l'objet Zend_View, il essaye de trouver un plugin qui répond à ce doux nom dans les répertoires par défaut ou ceux qu'on lui a renseigné. La meilleure doc pour savoir ce que peut faire le Zend Framework : c'est le code lui-même. L'accessibilité a dégagé des solutions complexes est discutable j'en conviens, mais ce n'est pas le sujet. Les plugins d'un Zend_View sont des views helpers qui se trouvent dans Zend/View/Helper. Zend/View/Helper/Url.php est un fichier qui existe, donc l'helper existe. Zend/View/Helper/Link.php n'existe pas dans le Zend framework, donc l'helper n'existe pas en natif.

Au pif, je vais dire que le livre fait appel à $this->view->link() (car il doit bien venir de quelque part en toute logique), car il a définit un helper personnalisé. Il a de grandes chances de se trouver dans le répertoire par défaut selon la convention application(/default)/views/helpers/link.php. Un différentiel des deux fichiers cités indiquera les différentes entre.

Je ne sais pas exactement le soucis à propos du sous-menu, mais c'est un contrôleur qui attribue des variables à une vue. Et, la vue se contente de les afficher. Un (sous-)menu peut être dynamique et/ou varier selon le contrôleur qui l'appelle.

L'héritage d'une méthode fonctionne très bien en dehors d'erreurs d'interface chaise-clavier (et des méthodes statiques, mais ce n'est pas plus le sujet) ^^

Dernière modification par Intiilapa (25-03-2009 23:14:15)

Hors ligne

 

#5 26-03-2009 08:39:34

Nikko
Membre
Lieu: Rueil (Haut-de-Seine)
Date d'inscription: 19-12-2008
Messages: 95

Re: [Zend_Layout][1.6]Sous-menu

Salut Intiilapa,

Je te remercie pour la réponse fournie. J'avais donc raison de penser que le plugin Link n'existait pas. Cependant, je n'ai toujours pas perçu l'utilité $this->view->url(). Pourrais-tu me l'expliquer ?

ps @ gostbuster : le plugin Link est rédigé à la page 146 du livre de Julien Pauli et Guillaume Ponçon.

Edit : une tite question n'ayant rien à voir avec le sujet du post. Est-ce que la fonction $this->_redirect() annule l'affichage de la vue de l'action en cours ?

Dernière modification par Nikko (26-03-2009 10:43:40)


Nikko

Etudiant en école d'ingénieur à l'INSIA

Hors ligne

 

#6 26-03-2009 14:57:22

mdelanno
Membre
Lieu: Nord
Date d'inscription: 26-08-2007
Messages: 90
Site web

Re: [Zend_Layout][1.6]Sous-menu

Nikko a écrit:

Cependant, je n'ai toujours pas perçu l'utilité $this->view->url(). Pourrais-tu me l'expliquer ?

L'aide de vue $this->view->url() permet d'assembler une route à partir de plusieurs paramètres. Si tu lui passe un tableau comme array('controller' => 'blog', 'action' => 'view', 'id' => 1), elle va retourner avec la route par défaut : /blog/view/id/1. Si tu change la route par défaut pour avoir des urls plus courte comme /blog/1 par exemple, tu n'auras pas à reprendre tes vues si tu l'as utilisé.
Ca te permets de changer le format de tes URL sans trop de casse.

Hors ligne

 

#7 27-03-2009 08:34:19

Nikko
Membre
Lieu: Rueil (Haut-de-Seine)
Date d'inscription: 19-12-2008
Messages: 95

Re: [Zend_Layout][1.6]Sous-menu

Merci mdelanno. Ta réponse est très claire et précise. J'ai maintenant compris l'utilité de cette aide de vue.


Nikko

Etudiant en école d'ingénieur à l'INSIA

Hors ligne

 

#8 27-03-2009 17:42:26

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: [Zend_Layout][1.6]Sous-menu

Nikko, tu t'en es sorti avec le menu? Moi je galère toujours autant. Comment tu déclare ton menu alors? et finalement tu ecris du code pour le menu dans chaque controlleur ?

si t'avais une piste, ce serait bien sympa.

A plus !


Gostbuster - Développeur WEB

Hors ligne

 

#9 30-04-2009 10:51:13

Nikko
Membre
Lieu: Rueil (Haut-de-Seine)
Date d'inscription: 19-12-2008
Messages: 95

Re: [Zend_Layout][1.6]Sous-menu

Je me permets de faire remonter ce thread, car je n'ai toujours pas réussi à implémenter les sous-menu.

Pour l'instant j'ai une solution provisoire mais très rébarbative. Je suis obligé de créer une vue SousMenuXxxx.phtml par onglet qui contient un sous-menu

Code:

if ($this->menu == 'monMenu1')
            print "<li id='active'><a id='current' href='";
        else
            print "<li><a href='";
        print ROOT_URL . "/monController1'>monLibellé1</a></li>";
        
        if ($this->menu == 'monMenu2')
            print "<li id='active'><a id='current' href='";
        else
            print "<li><a href='";
        print ROOT_URL . "/monController2'>monLibellé2</a></li>";

Cette solution ne me plaisant pas, je fais appel à vous pour savoir comment vous gérez vos sous-menu avec Zend.

Nikko


Nikko

Etudiant en école d'ingénieur à l'INSIA

Hors ligne

 

#10 30-04-2009 12:06:04

baboune
Membre
Date d'inscription: 29-11-2008
Messages: 103

Re: [Zend_Layout][1.6]Sous-menu

un topic assez riche sur le sujet :
http://www.z-f.fr/forum/viewtopic.php?id=1131

j'appelle une action de mon layout pour gérer mon menu :
<?php echo $this->action('menu', 'nav', 'default');?>

Hors ligne

 

#11 30-04-2009 12:59:58

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Zend_Layout][1.6]Sous-menu

Hello,

Regardez du côté du nouveau composant Zend_Navigation.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#12 30-04-2009 13:52:11

Nikko
Membre
Lieu: Rueil (Haut-de-Seine)
Date d'inscription: 19-12-2008
Messages: 95

Re: [Zend_Layout][1.6]Sous-menu

Merci beaucoup pour vos réponses à tous les deux.

@Mikealkeal : Je ne l'ai pas précisé, mais c'est pour une migration en 1.6. Par conséquent je ne peux utiliser Zend_Navigation.

@Baboune : Merci beaucoup pour ton lien, il m'est très utile et je pense avoir trouvé mon bonheur !


Nikko

Etudiant en école d'ingénieur à l'INSIA

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