Ich möchte den Navigationshelfer verwenden, um meine Navigationsmenüs mit Acl zu erstellen. Der Acl Teil habe ich gut funktioniert.
Ich möchte jetzt ein paar verschiedene Arten der Navigation anzeigen können. Z.B. Admin-nav, side-nav, new-nav usw. Ich kann nichts darüber in der Dokumentation finden. Nur wie man die Navigation einstellt und dann dieses Navigationsobjekt wiederholt innerhalb eines Layouts oder einer Ansicht verwendet.
Ich habe etwas Ähnliches versucht - mit zwei verschiedenen Containern, mit verschiedenen Seitenanordnungen, und dann diese Container in der Registrierung zu setzen. Dann aus meiner Sicht und / oder Layout Aufruf Navigation und Übergabe eines Containers:
%Vor%Das obige wird in meiner Nachrichtenansicht aufgerufen, das Folgende wird in meinem Layout aufgerufen
%Vor%Dies funktioniert für alle meine Seiten, abgesehen von der Nachrichtenseite. Auf meiner Nachrichtenseite wird das Nav für Nachrichten zweimal angezeigt, einmal im Layout und einmal in der Nachrichtenansicht. Das Admin-Nav wird nie angezeigt und scheint durch das Nachrichten-Nav überschrieben zu werden.
Ich könnte das völlig falsch machen, wenn das der Fall ist, lass es mich bitte besser wissen. Wenn diese Methode in Ordnung scheint, kann mir jemand helfen, herauszufinden, warum das Nachrichten-Nav im Layout und in der Nachrichtenansicht angezeigt wird.
Danke für Ihre Zeit
Jake
Ich habe genau dasselbe Problem gehabt. Ich erstelle einfach mehrere Instanzen von Zend_Navigation_Container in meinen Controllern für jedes der Menüs, die ich brauche, übergebe sie an die Ansicht und render sie dann, indem ich die Objekte direkt an die Menü-Rendermethode übergebe. Wie folgt:
In der Steuerung:
%Vor%In der Ansicht:
%Vor%Sie können sogar jede einzelne anpassen (indem Sie Methodenaufrufe nach dem ersten Aufruf des Menüs () einfügen):
%Vor% Ich bin gerade auf dieses Problem der Notwendigkeit mehrerer Navigationen gestoßen und habe dabei Ihr Problem entdeckt und es handelt sich tatsächlich um einen Fehler in Zend_View_Helper_Navigation_HelperAbstract
.
Zeile 516:
%Vor% Das Problem hier ist, dass, wenn Sie $this->navigation->render($container)
oder eine magische Methode wie $this->navigation()->menu($container)
nicht explizit aufrufen, der Aufruf von render
keinen Container erhält.
Dies bewirkt wiederum, dass der Standard-View-Helper für navigation
, der menu
ist, aus dem registry
(in diesem Fall wird der letzte gegebene Container verwendet) oder an Ort und Stelle instanziiert wird bewirkt, dass kein Container vorhanden ist).
Dies ist meine einfache Lösung, die getContainer
auf __toString
aufruft.
Zeile 516:
%Vor% Beim Durchsehen aller Hilfsdateien, die mit Navigation
in Zusammenhang stehen, war klar, dass die Absicht darin bestand, getContainer
aufzurufen. Es ist auch klar, dass dies kein Problem ist, wenn Sie den Helfer menu
view entweder direkt oder über die navigation
magic-Methode aufrufen.
Sobald Sie diese Zeile oben ändern, können Sie $this->navigation($container)
aufrufen und mehrere Navigationsvorgänge ausführen, ohne auf den menu
Helfer direkt zugreifen zu müssen.
Tags und Links php zend-framework navigation