我正在开发一种多语言应用程序,并试图制作一个中间件以将路由{locale}前缀传递给URL。但是现在我不需要在控制器中使用此{locale}参数,例如:
public function getPost(App\Post $post)
{
return view('welcome')->withPost($post);
}
Run Code Online (Sandbox Code Playgroud)
但上面的代码不能正常工作,除非我改变App\Post $post
来$locale, App\Post $post
。
问题是因为每当我创建一个新的控制器时,我都需要传递$ locale参数。那不酷。
如何避免将$locale
参数传递给所有控制器?我不需要它,因为我已经在中间件上使用了它。
更新:
路由\ web.php
Route::prefix('{locale}')->middleware('locale')->group(function () {
Route::get('/', 'PageController@getHome')->name('welcome');
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
...
// This route must be the last!
Route::get('/{post}', 'PageController@getPost')->name('post');
});
Run Code Online (Sandbox Code Playgroud)