ForwardMessage-Erweiterung
Einleitung
Mittels der ForwardMessage-Erweiterung ist es möglich, (Status-)Nachrichten auf der nachfolgenden Seite anzuzeigen. Ein Anwendungsfall wäre bspw. ein Anmeldevorgang: Ist die Anmeldung erfolgreich und will der Benutzer darüber benachricht werden, geschieht dies selten auf der gleichen Seiten wie die Anmeldemaske zu sehen ist. Eher wird diese Nachricht auf der folgenden Seite angezeigt, z.B. der Startseite.
Die Erweiterung wurde in folgendem Thema vorgeschlagen: http://forum.adventure-php-framework.org/de/viewtopic.php?f=10&t=393
Verwendung
Template #1:
Die Nachrichten werden im Template definiert (können aber auch im Controller hinzugefügt werden). Zunächst muss die benötigte Taglib hinzugefügt werden:
<core:addtaglib namespace="extensions::forwardmessage::pres::taglib" prefix="html" class="addforwardmessage" />Nun wird unter Verwendung der Taglib eine Nachricht hinzugefügt:
<html:addforwardmessage name="successfully_moved" [show="true"]><div class="success">Die Kategorie wurde erfolgreich verschoben.</div></html:addforwardmessage>
Über das Attribut name kann die Nachricht im Controller angesprochen werden. Dieses Feature wird benötigt, um die Meldung je nach Erfolg der Operation anzuzeigen bzw. auszublenden. Standartgemäß werden alle Nachrichten ausgeblendet - Um dieses Verhalten direkt im Template zu verändern, existiert der optionale Parameter show. Enthält dieser der Wert "true", wird die Nachricht ohne weitere Modifikationen auf der folgenden Seite eingeblendet.
Controller #1:
Um den Status der Nachricht (einblenden|verstecken) im Controller zu beeinflussen, wird zunächst eine Instanz des Managers benötigt:
$forwardMessageMgr = &$this->__getServiceObject('extensions::forwardmessage::biz', 'ForwardMessageManager', 'SESSIONSINGLETON');
Die Nachricht kann dann mittels showMessage() eingeblendet bzw. mittels hideMessage() ausgeblendet werden:
$forwardMessageMgr->showMessage('successfully_moved'); // Zeigt die Nachricht $forwardMessageMgr->hideMessage('successfully_moved'); // Versteckt die Nachricht
Template #2:
Um die Nachrichten im Zieltemplate (= Template der folgenden Seite) anzuzeigen, wird er Taglib html:getforwardmessages benötigt:
<core:addtaglib namespace="extensions::forwardmessage::pres::taglib" prefix="html" class="getforwardmessages" />Einbindung der Nachrichten an der entspr. Stelle:
<html:getforwardmessages />
Erweiterung
Die oben beschriebene Funktionalität wurde durch eine Idee von Jens Prangenberg um die Möglichkeit erweitert, innerhalb des <html:addforwardmessage /> mit dem Tag <message:getstring /> (analog zu <html:getstring />) sprachabhängige Texte einfügen zu können.
Die Anwendung im Template funktioniert wie folgt:
<core:addtaglib namespace="extensions::forwardmessage::pres::taglib" prefix="html" class="addforwardmessage" /> <html:addforwardmessage name="successfully_moved" [show="true"]> <div class="success"> <message:getstring namespace="" config="" entry="" /> </div> </html:addforwardmessage>
Der Quellcode ist ab dem SVN-Commit #1103 und dem Release 1.13 verfügbar.