So leiten Sie Benutzer mit Systemnachrichten in Joomla 3 um

8

Ich weiß, dass Sie dies erreichen können, indem Sie:

JFactory::getApplication->redirect(url, message, type)

aber die Dokumentation bei

JFactory :: getApplication

sagt, dass es veraltet ist und schlägt vor, es zu verwenden enqueueMessage, das ebenfalls veraltet ist und das Sie beispielsweise nicht zur Startseite weiterleitet.

Wie kann ich einen Benutzer mit Systemnachrichten mithilfe von nicht veralteten Methoden zur Startseite umleiten? Die Dokumentation besagt, dass sie in Version 4 von Joomla (?) Veraltet sein werden. Ist also die aktuelle Methode die einzige oder gibt es bereits eine neue Standardmethode, um dies zu erreichen?

Bearbeiten: Diese Methoden sind in JApplicationCms (Joomla-Bibliotheken) nicht veraltet, in JApplication (Joomla Plaftorm) jedoch veraltet. Da also JFactory::getApplicationdas JApplicationCms-Objekt zurückgegeben wird, sind die Methoden wie redirectund enqueueMessagenicht veraltet und ihre Verwendung der richtige Weg, um mit der Nachricht umzuleiten.

Adam M.
quelle

Antworten:

9

Das Übergeben der Nachricht über die Umleitungsfunktion ist veraltet, aber beide redirect()und beide enqueueMessage()sind für sich allein noch in Ordnung.

Sie müssen einfach beide zusammen verwenden, wie folgt:

$app = JFactory::getApplication();

$app->enqueueMessage('Redirect to another page was successful', 'success');
$app->redirect(JRoute::_('index.php'));

enqueueMessagespeichert die Nachricht in einer Sitzung. Wenn Sie dies also vor der redirect()Funktion aufrufen , ist der Sitzungswert auf der Seite, zu der Sie umgeleitet wurden, noch vorhanden, sodass die Nachricht angezeigt wird;)

Lodder
quelle
1
Eigentlich ist das eine bessere Lösung, denn seit Joomla! 3.2 JFactory::getApplication()gibt ein JApplicationCms-Objekt anstelle der veralteten JApplication zurück
Kitase88
Richtig, diese Methoden sind in JApplicationCms (Joomla-Bibliotheken) nicht veraltet, aber in JApplication (Joomla Plaftorm) veraltet. Dokumentation Link sagt , es gibt JApplicationCms (Link nicht funktioniert) und sagt JApplication zu sehen , wo diese Methoden sind veraltet. Es ist also Dokumentationsverwirrung und ich werde dieses Problem signalisieren, damit es behoben werden kann.
Adam M.
4

Am besten behandeln Sie alle Weiterleitungen direkt in Subcontrollern, die Sie nur verwenden müssen, $this->setRedirect($url,$msg,$type);und MVC erledigt den Rest der Arbeit.

Wenn Sie außerhalb von Controllern umleiten müssen, können Sie die JControllerLegacy- Klasse verwenden:

$controller = JControllerLegacy::getInstance("ComponentName");
$controller->setRedirect($url,$msg,$type);
$controller->redirect();
Kitase88
quelle