ルートグループを使用せずにすべてのアプリルートの複数のロケールを作成する方法を探しています。これは、外部拡張パッケージを使用しているためです。これは、ルートが多くの場所に登録されていることを意味します。Laravel 5.0。*ルートが処理される前に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"]);
}
私はあなたが何をしているのか簡単に知ることができませんでした。私は何かを見逃しているかもしれませんが、私はlaravelとsymfonys Requestクラスの両方を調べました。残念ながら、私は何の価値も見つけられませんでした。つまり、インデックス内のリクエストをインターセプトできます。PHPファイルをパブリックフォルダ内に作成し、リクエストオブジェクトを作成する前に '$ _SERVER [" REQUEST_URI "]'をセットすると動作します。 –
私はindex.phpファイル内ですばやく試しました。つまり、Laravelに到達する前にサーバー変数を編集できます。しかし、私はロケールなどのconfigsを使用するように病気の必要があると思う。 – Ben
私は同じ問題に直面しているし、私はそれを働かせることもできない。 'Request'オブジェクトは不変であるようです。私はindex.phpでも簡単にハックを設定しましたが、私はロケールのURIなども使用していますので、まだ研究しています。 – Pbal