Zend Framework 2 - Umleitung aus innerhalb einer Controller-Plugin ohne Rückgabe
Ist möglich ist, leiten Sie den Benutzer auf eine neue URL in einem controller plugin, ohne wieder ein Antwort-Objekt an den controller?
Speziell möchte ich leiten den Benutzer auf die sichere version der aktuellen URL. So in ZF2 habe ich dieses:
$url = 'https://'.$this->getURL();
$response = $this->getController()->redirect()->toUrl( $url );
return $response;
Jedoch in das Zend Framework 1 war ich in der Lage zu tun:
$redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
$url = 'https://'.$this->getURL();
$redirector->gotoUrlAndExit($url);
Ist es möglich, im wesentlichen 'redirect dann exit' in ZF2?
Ich merke, Sie haben wahrscheinlich Ihre Gründe dafür in der app, aber Sie sollten erwägen, die Behandlung dieses web-server-Ebene, und lassen Sie die app Agnostiker über die port/Protokoll.
InformationsquelleAutor Neil | 2012-11-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, Sie sind die Erweiterung Zend\Mvc\Controller\Plugin\AbstractPlugin, dann sollten Sie umleiten können, wie diese:
Wenn man sich die Methode toUrl in Zend\Mvc\Controller\Plugin\Redirect, es sieht wie folgt aus:
So offensichtlich, es ist Rücksendung der response-Objekt, aber es hat auch schon Hinzugefügt, den header, und aus dem controller Sie müssen nicht explizit die Antwort zurückgegeben, so dass Ihr plugin, sollten Sie nicht entweder. Ich denke, es wird allgemein getan, um eine fluent-Oberfläche, aber da Sie wissen Sie brauchen es nicht für irgendetwas anderes, werden Sie nicht brauchen, um es weiterzugeben zurück.
Hinweis: ich habe nicht getestet in einem plugin, aber ich Tue dies innerhalb der controller und es funktioniert einwandfrei:
Oh, ich verstehe, was Sie bekommen. Ich veränderte die plugin-Aufrufe in den obigen Beispielen mit return FALSE; die noch Umleitungen im Fall von der, die ich getestet in der Steuerung. Ich denke, es sollte die gleiche Arbeit in Ihrem plugin.
Wenn Sie erwarten, zu tun, eine Menge von dieser, und finden es anstößig, FALSE zurückzugeben, Sie könnten erweitern die Redirect-plugin, und eine neue Methode, wie toUrlAndExit($url);, die genauso funktioniert wie die native toUrl($url) - Methode aber FALSE zurück, statt.
Mein problem war, wenn ich FALSE zurück (wie in deinem Beispiel), es war die Rückgabe von FALSE der controller, nicht
InformationsquelleAutor dualmon
In Ihrem plugin einfach nur wieder die Aktion:
InformationsquelleAutor Tom Shaw