Sto cercando un modo per rendere tutte le route app con più impostazioni internazionali senza utilizzare i gruppi di route. Questo perché utilizzo un pacchetto di estensioni esterne, il che significa che i percorsi sono registrati in molti posti.Laravel 5.0. * Middleware per rimuovere il prefisso locale dall'URL prima che i percorsi vengano elaborati
In sostanza voglio avere/foo/bar oltre a/en/foo/bar,/de/foor/bar,/es/foo/bar ecc. Tutti da riconoscere ed elaborare tramite/foot/bar route
Route::get('foo/bar', function() {
return App::getLocale() . ' result';
});
Pertanto, quanto sopra potrebbe darmi "en result" o "de result" o "es result".
Ho già il middleware che imposta le impostazioni internazionali in base al segmento del percorso. Ho provato il seguente senza fortuna.
...
$newPath = str_replace($locale,'',$request->path());
$request->server->set('REQUEST_URI',$new_path);
}
return $next($request);
Speriamo che questo sia possibile o che ci sia un altro modo per raggiungerlo.
EDIT ------
Sulla base di un commento qui sotto ho inciso rapidamente aggiungendo il seguente codice in pubblico/index.php. Speriamo che questo possa dare un'idea migliore di ciò che sto cercando di ottenere modificando l'oggetto richiesta.
$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"]);
}
Non riuscivo a trovare nulla per facilitare fare ciò che state cercando. Forse mi è sfuggito qualcosa, ma ho guardato attraverso la classe di richiesta sia di laravel che di symfonys. Purtroppo non ho trovato nulla di valore. Detto questo, puoi intercettare la richiesta nell'indice.file php nella cartella pubblica e quindi impostare '$ _SERVER [" REQUEST_URI "]' prima di creare l'oggetto richiesta e funzionerà. –
Ho provato rapidamente qualcosa all'interno del file index.php, il che significa che posso modificare la variabile del server prima che arrivi a Laravel. Comunque penso che abbia bisogno di qualcosa di meglio, visto che uso le configurazioni per locales ecc. – Ben
Sto affrontando lo stesso problema e non riesco neanche a farlo funzionare. Sembra che l'oggetto 'Request' sia immutabile. Ho impostato anche un rapido hack in index.php, ma uso anche l'URI per locales etc, quindi continuo a fare ricerche. – Pbal