多言語アプリケーションを開発しており、URLに経路{locale}プレフィックスを渡すミドルウェアを作ろうとしています。しかし、今、私は、たとえば、コントローラにこの{}ロケールパラメータを使用する必要はありません。Laravel 5.4:コントローラで経路パラメータを使用しないでください
public function getPost(App\Post $post)
{
return view('welcome')->withPost($post);
}
しかし、私は$locale, App\Post $post
にApp\Post $post
を変更しない限り、上記のコードは動作しません。
問題は、新しいコントローラを作成するたびに$ localeパラメータを渡す必要があるためです。それはクールではない。
$locale
パラメータをすべてのコントローラに渡すことを避けるにはどうすればよいですか?私はミドルウェアですでにそれを使用していたので、私はそれを必要としません。
UPDATE:それが必要とされない場合
ルート\ web.php
Route::prefix('{locale}')->middleware('locale')->group(function() {
Route::get('/', '[email protected]')->name('welcome');
Auth::routes();
Route::get('/home', '[email protected]')->name('home');
...
// This route must be the last!
Route::get('/{post}', '[email protected]')->name('post');
});
更新しました。ご覧のとおり、すべてのルートに{locale}プレフィックスを使用しています。 'locale'パラメータをオプションのままにする方法はありますか?私は 'www.site.com/fr/about'と' www.site.com/about'にナビゲートする必要があります。 'locale'パラメータを渡さないと、デフォルトで英語が読み込まれます。 –
私が知る限りでは、URLがあいまいになり、ルータはURLの途中でオプションのパラメータを区別できません。 '{locale}'がリストの最後のパラメータだった場合は、それをオプションでマークすることができますが、適切な構造体でマークすることはできません。 – btl
うん!だから...ここで質問を解決するにはどこに行く?別の方法/構造/アルゴリズムがあれば、私は感謝します。 –