Wie übergibt man global Variablen in layout.phtml in ZF2?
Möchte ich weitergeben eine Reihe von Variablen, die zu meinem layout.phtml über die gesamte Anwendung hinweg(Global). Und damit meine ich die, die ich nicht verwenden möchte,
$this->layout()->someVar = someValue;
in jede Aktion, die ich hier habe, da würde es eine Menge zusätzliche Arbeit und code. So gibt es einen Weg, es zu tun in nur einem Ort? Oder, Was ich erwähnte, ist alles, was ich habe! Hoffe nicht 🙂
Vielleicht mit sessions ? – Remi Thomas
Danke für die Lösung. Für die Zeit, die ist, was ich verwende. Für angemeldete Benutzer-info, system-und layout-Einstellungen und eine ACL-Liste. Aber das problem ist, dass ich haben, um ein neues Objekt in das layout.phtml die ich glaube nicht, dass geeignet ist, ist es? Ich habe irgendwo gelesen, dass alle Daten, die wir brauchen, um zu verwenden, die in view-Modelle übergeben werden sollte, um es mit controller-Aktionen. Und speziell ich bin kein fan von schneiden Ecken, wenn es also eine saubere Art und Weise, dies zu tun, würde ich eher nicht tun, es auf diese Weise.
Und vor kurzem habe ich, um die Anzahl der ungelesenen Nachrichten für jeden Benutzer und verwenden Sie es in das layout.phtml. Also, wenn ich es im layout.phtml, dass es eine MENGE php-Skript in ein view-Modell oder das layout.
Dank
InformationsquelleAutor der Frage Milad.Nozari | 2013-08-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die beste und sauberste Weg ist mit einem ViewHelper, als Orochi schlägt. Hier einige Anweisungen zur Erstellung Ihrer eigenen ViewHelper: http://framework.zend.com/manual/2.2/en/modules/zend.view.helpers.advanced-usage.html. Es ist nicht zu Komplex ist 😉
Jedoch Ihr problem gelöst werden könnte, auch in einer anderen Art und Weise.
Angenommen, dass die Variablen, die Sie benötigen, enthalten Werte, die Ihnen bereits in Ihrer Anwendung vorhanden (und dann ausgesetzt ZF2 Dienste-Verwalter), fügen Sie einige Zeilen auf das "onBoostrap" - Funktion in Ihrem Module.php (z.B. auf Application-Modul).
Hier ein Beispiel:
In dieser, wie Sie schreiben, die Zuordnung in nur einem Ort. Die variable ist dann zugänglich, wie üblich:
InformationsquelleAutor der Antwort stefanovalle
Dies ist genau das, was Sie wollen...
Keine Helferlein, keine event-manager, kein service-manager oder andere Methode der Klasse jonglieren. Warum tun Menschen auf Stack machen Dinge, die so verdammt kompliziert manchmal?
InformationsquelleAutor der Antwort Timothy Perez
Erstellen Sie Ihre eigenen ViewHelper.
EDIT:
So mache ich es: im Inneren des Moduls src-Ordner, erstelle ich neue Ordner Anzeigen dann in diesem Ordner Anzeigen, ich erstellen Sie einen weiteren Ordner namens Helfer. In diesem Ordner erstelle ich meine helper-Klassen. So, zum Beispiel, ich erstelle Navigation.php Datei. In dieser Datei, die ich erstellen Sie eine Klasse namens Navigation, die sich von AbstractHelper (use Zend\View\Helper\AbstractHelper). Dann Schreibe ich den code im public function __invoke(), die liefert auch ein Ergebnis. Sie müssen auch hinzufügen, Ihre view-helper-Klasse, um 'view_helpers' innen Modul ist config/module.config.php so etwas wie:
Dann rufen Sie Ihre 'nav' als eine Methode, die überall innerhalb deines view oder layout, zum Beispiel nav();?>
InformationsquelleAutor der Antwort Orochi
In Ihrem Application/Module.php
1) Erstellen Sie eine Versand-Ereignis für das zend framework, wie diese:
2) Jetzt können Sie den Zugriff auf Ihre benutzerdefinierte variable im layout wie dieses:
$dies->YOUR_VARIABLE_NAME;
InformationsquelleAutor der Antwort chahat561
Können Sie die Globale variable auf Ihrem layout aus Application/Module.php in Zend Framework 2 mit ModuleManager wie folgt:
In Ihrem Application/Module.php
Schritt 1:
Schritt 2:
Schritt 3:
In Ihrem layout.phtml Datei
verwenden Sie Ihre Variablen als
$this->YOUR_VARIABLE_NAME
Ich hoffe, das hilft.
InformationsquelleAutor der Antwort KumarA
Warum nicht verwenden Sie Vererbung, abstrakte wiederholbaren Konfiguration über einen Basis-controller und legt die layout-Variablen. Da die Wiederverwendung ist das Hauptanliegen hier, grundlegende OOP sollte ausreichen. Zend muss nicht alles tun :).
InformationsquelleAutor der Antwort F.O.O