Ich bin auf der Suche nach einer Möglichkeit, alle App Routen haben mehrere Locales ohne Verwendung von Routengruppen. Dies liegt daran, dass ich ein externes Erweiterungspaket verwende, was bedeutet, dass Routen an vielen Orten registriert sind.Laravel 5.0. * Middleware zum Entfernen Präfix Locale von der URL vor der Verarbeitung von Routen
Im Wesentlichen möchte ich/foo/bar sowie/en/foo/bar,/de/foor/bar,/es/foo/bar usw. alle von der/foot/bar-Route erkannt und verarbeitet werden
Route::get('foo/bar', function() {
return App::getLocale() . ' result';
});
Also das oben würde mir 'en result' oder 'de result' oder 'es result' geben.
Ich habe bereits Middleware, die das Gebietsschema basierend auf dem Pfadsegment setzt. Ich habe folgendes ohne Glück versucht.
...
$newPath = str_replace($locale,'',$request->path());
$request->server->set('REQUEST_URI',$new_path);
}
return $next($request);
Hoffentlich ist dies möglich, oder es gibt eine andere Möglichkeit, es zu erreichen.
EDIT ------
auf einen Kommentar Basierend unten ich es schnell indem Sie den folgenden Code in public/index.php gehackt. Hoffentlich wird dies eine bessere Vorstellung davon geben, was ich zu erreichen versuche, indem ich das Anfrageobjekt bearbeite.
$application_url_segments = explode('/', trim($_SERVER["REQUEST_URI"], '/'));
$application_locale = $application_url_segments[0];
$application_locales = ['en' => 'English', 'de' => 'German'];
if (array_key_exists($application_locale, $application_locales)) {
$_SERVER["REQUEST_URI"] = str_replace('/' . $application_locale,'',$_SERVER["REQUEST_URI"]);
}
Ich konnte persönlich nichts finden, um Easilly tun, was Sie wollen. Ich habe vielleicht etwas verpasst, aber ich habe beide Laravel- und Symfonys Request-Klassen durchgesehen. Leider habe ich nichts Wertvolles gefunden. Davon abgesehen können Sie die Anfrage im Index abfangen.PHP-Datei im Öffentlichen Ordner und setzen Sie dann $ _SERVER ["REQUEST_URI"] ', bevor es das Anfrageobjekt erstellt und es funktioniert. –
Ich habe schnell etwas in der Datei index.php versucht, was bedeutet, dass ich die Servervariable bearbeiten kann, bevor sie Laravel erreicht. Ich denke jedoch, dass ich etwas besseres brauche, da ich Configs für Locales etc. verwende. – Ben
Ich stehe vor dem gleichen Problem und ich kann es auch nicht funktionieren. Es scheint, dass das Request-Objekt unveränderlich ist. Ich habe auch einen schnellen Hack in index.php gesetzt, aber ich benutze auch den URI für Locales usw., also recherchiere ich noch. – Pbal