ZF2: Redirect mit Statuscode

Ab und zu muss man bei einem unerwarteten Ergebnis auf eine andere Seite weiterleiten. Dafür bietet das Zend Framework 2 auch bereits das Controller Plugin „Redirect“:

<?php
 
namespace Application\Controller;
 
use Zend\Mvc\Controller\AbstractActionController;
 
class IndexController extends AbstractActionController
{
    public function indexAction()
    {
        $this->redirect()->toRoute('routeName');
    }
}
?>

Um einen Statuscode bei der Weiterleitung zu setzen muss man nur noch einen weitere Methodenaufruf hinten ranhängen und schon sendet das ZF2 den korrekten HTTP-Statuscode:

<?php
 
namespace Application\Controller;
 
use Zend\Mvc\Controller\AbstractActionController;
 
class IndexController extends AbstractActionController
{
    public function indexAction()
    {
        $this->redirect()->toRoute('routeName')->setStatusCode(201);
    }
}
?>

2 Gedanken zu „ZF2: Redirect mit Statuscode

  • 30. Juli 2013 um 13:36
    Permalink

    Ich versuche gerade dieses bei einer zugriffsgeschützten Seite. Der Authentifierzungsservice wird mit hasIdentity() erfolgreich durchlaufen (Der User hat keinen Zugriff). Ich möchte ihn dann zur Loginseite weiterleiten. Hierbei wollte ich den Statuscode 403 setzen. Sobald ich das mache funktioniert die Weiterleitung nicht mehr und die zugriffsgeschützte Seite wird angezeigt mit HTTP-Header 403. Ohne Statuscode funktioniert die Weiterleitung. Haben Sie hierzu eine Idee?

    Antwort
    • 30. Juli 2013 um 13:53
      Permalink

      Lässt sich ohne Quelltext etwas schwer sagen, aber eigentlich sollte der Authtentifizierungsservice ja nicht im Controller aufgerufen werden (Artikel bezog sich nur auf Controller) sondern über einen Listener. Und dann leitet der Authentifizierungservice auf die entsprechende Seite weiter.

      Antwort

Kommentar verfassen