2 Stimmen

Ist es möglich, meine einfache URL (ohne Angabe des Moduls, Controller und Aktion) in Zend Framework zu routen?

Ich bin mit Zend-Framework für mein Projekt und ich habe eine Anforderung, um den Pfad zu routen, wo ich es will. Zum Beispiel: Ich habe einen Pfad www.example.com/module/controller/action1 und ich möchte intern auf www.example.com/module/controller/action2 weiterleiten.

Aber das Hauptproblem ist, dass ich nicht die Funktion verwenden möchte, in der ich das Modul, den Controller und die Aktion angeben muss [$this->_forward('action2', 'controller', 'module');], sondern einfach etwas wie dieses: $this->_forward('module/controller/action2');.

Bitte schlagen Sie mich, wenn jemand seine Lösung hat. seine dringende Notwendigkeit meines Projekts.

Danke! Jitu

0voto

Seb Barre Punkte 1539

Die Controller-Methode _forward() kann die Aktion nur akzeptieren, wenn sie sich im selben Controller und Modul befindet wie die erste Aktion, von der Sie weiterleiten.

Also in Ihrem action1Action() Methode, können Sie einfach aufrufen:

$this->_forward('action2');

Wenn die zweite Aktion nicht im selben Modul/Controller ist, könnte man Zend_Controller_Action in einen eigenen "Basis"-Anwendungscontroller subklassifizieren, von dem alle anderen Aktionscontroller erben (eine gute Praxis bei ZF-Projekten, wie ich finde) und dann einen weiteren erstellen, der _forwardFromUrl() oder etwas Ähnliches, das Ihre URL zerlegt und sie an _forward() (oder erstellen Sie einen Action-Controller-Helfer, wenn Sie nur diese eine zusätzliche Funktion benötigen).

Dieses Beispiel ist vereinfacht und setzt voraus, dass Ihr $url hat immer das Format module/controller/action :

protected function _forwardFromUrl($url)
{
   $parts = array_reverse(explode("/",$url));
   $this->_forward($parts[0],$parts[1],$parts[2]);
}

Ich hoffe, das hilft!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X