Erhalte das Zend_Navigation-Menü, um mit jQuerys Fisheye zu arbeiten

8

Ich verwende Zend_Navigation (süße Ergänzung zum Framework, BTW) um mein Menü zu erstellen, danach sollte es auf der Seite gerendert werden (selbstverständlich). Ich setze den Container zuerst irgendwo im Controller:

%Vor%

Dann wird es im Layout wie folgt dargestellt:

%Vor%

was perfekt funktioniert. Jetzt: Ich möchte, dass das Menü etwas anders dargestellt wird. Die Seite, die ich erstelle, verwendet das jQuery Fisheye-Plugin , um eine Mac-Version zu erstellen. wie Dock-Menü. Dieses Plugin benötigt jedoch ein spezielles Markup ...

Tatsächlich benötigt es eine Liste von <a> -Elementen, die sowohl ein <img> (für das Icon) als auch ein <span> (für den Tooltip) enthalten. Der Standard-Helper "Menüansicht" rendert alles (logisch) in einer ungeordneten Liste mit dem Parameter 'label' als Linktext.

Es scheint, dass Inhalt, der an den Parameter 'label' übergeben wird, vor dem Rendern mit Escapezeichen versehen wird. Das Einfügen des HTML-Codes wird mir also nichts nützen. Außerdem scheint das Fisheye normalerweise nicht seine Items aufzunehmen, die in einem <li> -Tag enthalten sind, wobei das gesamte Ding in <ul></ul> eingewickelt ist, sondern nur eine einstufige Liste von <a> -Elementen.

Ich dachte darüber nach, einen eigenen View-Helfer für das Dock zu schreiben, der in der Lage sein würde, die <img> und <span> einzufügen, aber es fällt mir sehr schwer, einen benutzerdefinierten View-Helfer anzuhängen in die Navigationsklasse. Ich kann einfach nicht herausfinden, wo ich es platzieren soll und auf welche Weise, auch wenn alle anderen benutzerdefinierten Klassen (Modelle und so) vom Autoloader liebevoll betreut werden. Irgendwelche Ideen dazu?

Auch wenn ich diesen View-Helper zum Arbeiten nutzen kann, bin ich immer noch mit der HTML-Liste ungeordnet - ich weiß, dass ich diese mit dem Custom-View-Helfer auch verlieren kann, aber ich war schon immer ein Fan Hauptnavigationsmenüs innerhalb einer Liste aus Gründen der Semantik zu enthalten.

Wenn mir jemand ein bisschen helfen kann, würde ich das sehr schätzen. Wenn das Fisheye nur nicht mit <ul> funktionieren soll, wäre das zu schade ... Gäbe es in diesem Fall einen guten Grund, Zend_Navigation ganz zu verlieren?

    
JorenB 07.08.2009, 08:55
quelle

2 Antworten

25

Ich habe den Weg auch noch nicht in Bezug auf die Erstellung eines benutzerdefinierten Renderers gesehen. Hier ist, was ich am Ende getan habe:

Erstellen Sie zunächst, anstatt den Standardaufruf menu () zu rendern, ein Partial, in das gerendert werden soll:

%Vor%

Dann (aus der Dokumentation) können Sie ein "benutzerdefiniertes" Rendering wie folgt erstellen:

%Vor%

Ich habe damit gemacht, was ich ursprünglich hatte (ein Menü mit einer Ebene von Untermenüs) mit diesem Skript:

%Vor%

Sie könnten einfach das Markup im Teil ändern und Ihre Bilder / Icons dort hinzufügen.

    
typeoneerror 10.08.2009, 14:38
quelle
7

Entschuldigung, für das Formatierungsproblem im vorherigen Beitrag

Um Ihren benutzerdefinierten Helfer hinzuzufügen, machen Sie folgendes in Ihrem Bootstrap:

%Vor%

Als nächstes erstellen Sie Ihren benutzerdefinierten Ansichts-Helper und fügen ihn in den Pfad 'addHelperPath' ein. Je nachdem, was Sie tun möchten, müssen Sie mindestens Ihre eigene htmlify-Funktion implementieren. Sieh dir Zend / View / Help / Navigation / Menu.php als Beispiel an.

%Vor%

Als nächstes in Ihrem PHP-Skript:

%Vor%

oder nur

%Vor%

Wenn Sie jetzt dem generierten HTML-Code Ihre eigenen benutzerdefinierten Eigenschaften hinzufügen möchten, können Sie diese zu Ihrer Navigations-Ini oder XML-Datei hinzufügen. Zum Beispiel:

%Vor%

Das benutzerdefinierte XML-Tag <img> wird als Eigenschaft der Navigationsseite gespeichert und kann wie folgt abgerufen werden:

%Vor%

Hoffe, das hilft. Peter

    
Peter 29.11.2009 19:23
quelle

Tags und Links