Gebietsschema und Anforderungen zu allen Routen hinzufügen - Symfony2

8

Ich habe eine Anwendung erstellt, die keine Übersetzungen haben sollte, aber jetzt habe ich beschlossen, diese Funktion hinzuzufügen. Das Problem ist, dass alle meine Routen so aussehen:

%Vor%

und ich möchte, dass sie jetzt so sind:

%Vor%

Muss ich das wirklich tun, und gibt es eine Möglichkeit, globalere oder automatische zu tun oder zumindest nur einmal Anforderungen hinzuzufügen, weil sie für alle URLs gleich sind? Vielen Dank im Voraus!

    
Faery 12.07.2013, 07:59
quelle

6 Antworten

14

Verwenden Sie JMS18nRoutingBundle ( Dokumentation ) >) zu diesem Zweck. Kein benutzerdefinierter Loader, keine Kodierung ...

Das Bundle kann allen Ihren Routen das Gebietsschema voranstellen, ohne etwas zu ändern, mit Ausnahme einiger Konfigurationen für das Bundle. Es ist die schnellste (und meine empfohlene) Lösung, um loszulegen.

Sie können sogar vorhandene Routen für verschiedene Gebietsschemas übersetzen.

Eine kurze Einführung finden Sie in diesem Coderwall-Beitrag .

    
nifr 12.07.2013, 19:39
quelle
12

Sie können dies in Ihrer globalen Konfigurationsdatei tun

%Vor%

Ziemlich langsame Reaktion, aber hatte ein ähnliches Problem.

Gut zu wissen ist, dass Sie beim Importieren der Ressource auch das Präfix {_locale} löschen können. Sie müssten dann {_locale} zu jeder bestimmten Route hinzufügen.

Auf diese Weise können Sie die Domain www.domain.com ohne Gebietsschema innerhalb Ihres Bundles abfangen, ohne die Anforderungen und Standardeinstellungen neu schreiben zu müssen.

Sie könnten jedoch immer die Route www.domain.com in Ihrer globalen Routing-Konfiguration definieren.

    
Chris B. 27.12.2013 00:42
quelle
2

Konfigurieren Sie symfony für die Lokalisierung:

Fügen Sie der Sitzung eine Lokalisierung hinzu (beachten Sie, dass die Konvention / locale / action ist):

%Vor%

Alternativ kann das Gebietsschema manuell festgelegt werden:

%Vor%

app / config / config.yml

%Vor%

In Ihrer Antwort:

%Vor%

Lokalisierung lokalisierte Dateien konfigurieren:

messages.bg

%Vor%

messages.fr

%Vor%

Mehr zum Thema: Offizielle symfony-Dokumentation

    
Sam Aleksov 12.07.2013 08:25
quelle
2

Die bessere Lösung, statt Anforderungen in alle Routen oder globalen Bereich zu setzen, ist die Verwendung von EventListener und die Umleitung des Benutzers auf dieselbe Route, jedoch mit unterstütztem Gebietsschema, zum Beispiel:

%Vor%

Und services.yml

%Vor%

In parameters.yml können Sie unterstützte Gebietsschemata angeben:

%Vor%     
Athlan 28.05.2014 08:51
quelle
1

Ich denke, dass Sie ein benutzerdefiniertes Ladeprogramm benötigen, das den klassischen Konfigurationslader (Symfony \ Component \ Config \ Loader \ Loader) erweitert und das Muster manipuliert

Ссылка

Überprüfen Sie das erste Beispiel, ich habe es noch nicht versucht, aber ich bin mir ziemlich sicher, dass es zu Ihrem Problem passt.

    
ROLO 12.07.2013 08:22
quelle
0

Sie können diese Lösung sehen: Ссылка

Der Parameter {_local} in der Route muss in der App / Config-Routing-Datei enthalten sein, wenn Sie ihn auf alle Ihre Routen anwenden möchten.

Diese Lösung verwendet einen Ereignis-Listener, um zur guten URL umzuleiten, wenn in der URL kein {_local} vorhanden ist: Ändern Sie yoursite.com/your/route in yoursite.com/{_locale}/your/route

Es funktioniert mit oder ohne Parameter.

    
Baptiste LEVESQUE 11.05.2016 17:12
quelle

Tags und Links