Für ein Projekt wollte ich ein Prefix für die Routen verwenden und dieses an einer zentralen Stelle konfigurieren können. In diesem Fall sollte damit der Admin-/Backendbereich abgegrenzt werden.
Nach etwas Suchen fand ich eine Möglichkeit in der Symfony Dokumentation.
Ab Version 2.1 kann ein Parameter in der Konfigurations-Datei gespeichert werden.
# app/config/config.yml parameters: backend_prefix: admin
Dieser Parameter kann dann z.B. in der Route-Annotation oder der Routing Konfiguration verwendet werden.
/** * @Route("/%backend_prefix%/user") */ class UserBackendController extends Controller { /** * @Route("/") */ public function indexAction() { /* do something */ } }
Durch das Prefix ist dieser Bereich nicht nur optisch im URL abgehoben, sondern kann durch die Security Konfiguration auch leicht nur für einzelne Nutzergruppen freigegeben werden.
14.12.2012 um 10:36 Uhr
Hallo,
wenn man seine Routen nicht per Annotations sondern via z.B. YML definiert (ok, vllt geht es auch mit Annotations, das weiß ich aber gerade nicht), kann man ein Prefix für eine importierte Datei definieren.
Beispiel: ich habe “normale” Routen und Admin-Routen.
Ich erstelle zwei Dateien routing.yml und routing_admin.yml
In /app/config/routing.yml stehen dann zwei Zeilen:
my_bundle_admin:
resource: “@MyBundle/Resources/config/routing_admin.yml”
prefix: /admin
my_bundle:
resource: “@MyBundle/Resources/config/routing.yml”
prefix: /
Dadurch werden diese automatische mit dem Prefix versehen.
PS: gerade gesehen, das geht auch via Annotations, dort aber nur für Routen in einem Controller:
http://symfony.com/doc/2.0/bundles/SensioFrameworkExtraBundle/annotations/routing.html#route-prefix
14.12.2012 um 13:47 Uhr
Beides funktioniert gleich gut. Mit dem Parameter dann noch flexibler, weil jetzt der Prefix nur noch in einer Datei angepasst werden muss, wenn man in mehreren Bundles Adminrouten verwendet.