在Laravel中使用locale作为前缀之后路由NotFoundHttpException

时间:2017-08-31 07:41:34

标签: php laravel routes

在Laravel 5.4中,我希望使用基本url为locale添加前缀。当我运行php artisan serve然后我得到

  

notfoundhttpexception

。如果我手动放置http://localhost:8000/en,它确实有效。我现在想要什么,当我将运行php artisan服务时,它应该重定向到http://localhost:8000/en

以下是路线档案:

Route::group( ['prefix' => App::getLocale() ], function()
{
    Route::get('/', array('as' => 'home.index', 'uses' => 'HomeController@getIndex'));

});

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你需要使用这样的代码:

Route::group( ['prefix' => '{locale}' ], function()
{
    Route::get('/', array('as' => 'home.index', 'uses' => 'HomeController@getIndex'));
    //Setup locale based on request...
    App::setLocale(Request::segment(1));
});

但我建议的更好的方法是使用区域设置,如:

if (in_array(Request::segment(1), ['en', 'fr'])) {
    App::setLocale(Request::segment(1));
} else {
    // set your default local if request having other then en OR fr
    App::setLocale('en');
}

只需拨打路线:

Route::group( ['prefix' => '{locale}' ], function()
{
    Route::get('/', array('as' => 'home.index', 'uses' => 'HomeController@getIndex'));
});

通过此代码,您可以动态地根据路由前缀设置区域设置。