Symfony2: Globale Variablen in Routen

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.

2 Kommentare

  1. 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

  2. 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.

Schlagwörter: Adapter, Amazon, Animation, Annotations, Anonyme Klasse, Ant, Apache, API, Array, ArrayAccess, Attachment, AutoLoader, Bedienung, Bedingung, Benchmark, Bildbearbeitung, BOM, Bootstrap, Bot, Byte Order Mark, Callback, CamelCase, Canvas, Captcha, Cheatsheet, CLI, Closure, Cloud, CodeSniffer, Community, Comparator, Contest, Controller, Converter, CouchDB, Countable, Cronjob, CSV, CustomLibrary, Custom_Model, Data Mapper, Datei, Datenbank, Datenstruktur, Datentypen, Dating, Decorator, Dekorierer, Design Patterns, Dump, Duplikat, each, Eclipse, Entwicklung, Entwurfsmuster, Enum, Erweiterung, Eventhandling, Exception-Handling, Extension, Factory, Fehler, Flash, Foreach, Formatierung, Formular, Funktion, Futon, Header, HTML5, HTTP, IDE, If, Implementierung, InnoDB, Interceptor, Interface, isset, Iterator, Java, JavaScript, jQuery, Konfiguration, Konsole, Kontrollstruktur, kopieren, Late Static Binding, Layout, Linux, Listeners, Logging, Löschen, Magento, Magic Methods, Marketing, Methode, Model, MVC, MySQL, NetBeans, Objekt, Observable, Observer, OOP, Operator, Parameter, Partnersuche, Performance, PHP, phpMyAdmin, PHPUnit, Plugin, Proxy, Qualitätssicherung, Query, Reflection, Request, Response, Rest-API, Rockstar, Routing, S3, Samba, Scheifen, Schleife, Schutz, Secure Shell, Selbstreferenz, Shop, Sicherheit, Sicherung, Singleton Pattern, SOAP, Sortierung, Sourcecode, Spam, Speicherproblem, Spickzettel, SPL, SSH, Statement, Stellvertreter, Strategy Pattern, Stream, String, Sun VirtualBox, Support, Switch, Symfony, Symfony2, Symfony Live, Tag, Template, Template Method, Ternär Operator, Testing, Thumbnail, Tool, Tour, Twig, Type-Cast, Umwandlung, Underscore, unset, Vererbung, Verzweigung, Video, Videospiel, Virtualisierung, Visitor Pattern, Vorschaubild, walk, Webserver, Webservice, Weiterleitung, Wrapper, Youtube, Zeitsteuerung, Zend Framework, Zend_Cloud, Zend_CodeGenerator, Zend_Http_Client, Zend_Service, Zugriffsmethode