2012-04-05 6 views
0

Ich bin ein Anfänger, soweit das Schreiben von Zend-Router betroffen sind. Ich möchte alle Anfragen des FormularsFilter Anfrage in Zend Router

/: Benutzername an Controller => Benutzer und Aktion => Profil. Der Catch ist, dass ich in der Lage zu filtern, was: Benutzername wird geroutet werden. , d. H. Ich möchte die Benutzernamen filtern werden geroutet.

Der grundlegendste und wichtigste Filter, den ich anwenden möchte, ist, dass, wenn der: Benutzername mit einem vorhandenen Controller-Namen übereinstimmt, er nicht an/user/profile weitergeleitet werden soll.

Jede Hilfe zu diesem Thema wäre sehr willkommen. Danke.

Antwort

1

Hier sind einige Hinweise, die Ihnen erhalten sollten, wo Sie sein möchten:

  1. Routen auf einen Stapel zusammengefasst sind, so sind sie LIFO (last in, first out). Dies bedeutet, dass Ihre Route mit der höchsten Priorität zuletzt definiert werden sollte. In diesem Szenario möchten Sie, dass Ihre Route "/: username" früher aufgeführt wird und daher eine niedrigere Priorität hat. Dadurch können Ihre anderen bestehenden Routen zuerst weitergeleitet werden.
  2. Sie erwähnten, dass Sie "filtern" möchten, was: Benutzername wird geroutet. Hast du eine statische Liste von Nutzernamen? Wenn dies der Fall ist, können Sie eine Regex-Route verwenden und tun (Benutzername1 | Benutzername2 | ...). Wenn Sie Benutzernamen über die Datenbank suchen, müssen Sie eine benutzerdefinierte Routenklasse erstellen, die Ihre Datenbank abfragt.
  3. Alternativ können Sie einfach die Muster basierte Route verwenden, aber dann filtern Sie in einem Front-Controller-Plugin.

HINWEIS: Wenn Sie mit der Option # 3 gehen, sollte die folgende Ihnen den Einstieg:

$router  = Zend_Controller_Front::getInstance()->getRouter(); 
$matchedRoute = $router->getCurrentRouteName(); 

Sie Maßnahmen ergreifen, die auf der Strecke Namen basieren würde. Wenn es nicht der Routenname ist, der die Route von /: username definiert, dann ignoriere. Wenn es übereinstimmt, suchen Sie den Benutzernamen und den Filter.

+0

FYI, Sie könnten auch diese Zendcasts-Folge ausprobieren: http://www.zendcasts.com/creating-custom-zend_controller-routes-2/2009/01/ –

Verwandte Themen