Я ищу способ сделать все маршруты приложений несколькими локалями без использования групп маршрутов. Это связано с тем, что я использую пакет внешних расширений, что означает, что маршруты регистрируются во многих местах.Laravel 5.0. * Промежуточное программное обеспечение для удаления языка prefix из URL-адреса до того, как маршруты обрабатываются
По существу, я хочу иметь/foo/bar, а также/en/foo/bar,/de/foor/bar,/es/foo/bar и т. Д. Все, чтобы их распознавали и обрабатывали по маршруту/foot/bar
Route::get('foo/bar', function() {
return App::getLocale() . ' result';
});
Таким образом, вышеизложенное дало бы мне «результат» или «результат» или «результат».
У меня уже есть промежуточное программное обеспечение, которое устанавливает языковой стандарт на основе сегмента пути. Я пробовал следующее без везения.
...
$newPath = str_replace($locale,'',$request->path());
$request->server->set('REQUEST_URI',$new_path);
}
return $next($request);
Надеюсь, это возможно, или есть другой способ его достижения.
EDIT ------
Основываясь на комментарий ниже, я быстро взломал его, добавив следующий код в общественном/index.php. Надеюсь, это даст лучшее представление о том, чего я пытаюсь достичь, отредактировав объект запроса.
$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"]);
}
я не смог лично найти что-нибудь, чтобы easilly делать то, что вы после этого. Возможно, я что-то пропустил, но я просмотрел как класс laravel, так и symfonys Request. К сожалению, я не нашел ничего ценного. При этом вы можете перехватить запрос в индексе.php в общей папке, а затем установите '$ _SERVER [" REQUEST_URI "]' перед созданием объекта запроса, и он будет работать. –
Я быстро попробовал что-то в файле index.php, что означает, что я могу редактировать переменную сервера до того, как он попадет в Laravel. Однако мне кажется, что мне нужно что-то лучше, поскольку я использую конфиги для локалей и т. Д. – Ben
У меня такая же проблема, и я не могу заставить ее работать. Кажется, объект 'Request' является неизменным. Я также установил быстрый взлом в index.php, но я также использую URI для локалей и т. Д., Поэтому все еще исследую. – Pbal