在Laravel中使用语言路由URL

时间:2012-12-07 12:49:39

标签: php routing routes url-routing laravel

我有一个网络,我想添加本地化。

目前我的routes.php看起来像

Route::controller('browse');
Route::controller('search');
Route::controller('support');
Route::controller('filter');

所以网址是url / browse(等等)

我正在尝试制作网址,例如/ url / en / browse,/ url / cs / browse,/ url / de / browse(等等所有控制器)

如果路线前没有语言,它将添加和重定向(向后兼容/浏览)

我尝试使用过滤器制作或找到一些简单的解决方案,不成功。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

尝试在config中使用默认应用程序语言和支持的语言数组。

如果您使用支持的语言添加语言,那么从该段开始的任何路径都将设置当前语言,并将其视为根网址。

与您的要求有一点不同之处在于,如果没有网址中的语言,则会接受默认语言,而不是重定向。

修改:可以帮助您重定向的过滤器。

Route::filter('pattern: *', array('name' => 'langredirect', function()
{
    $uri = Request::server('request_uri');
    $segments = explode('/', $uri);
    if ( ! array_get(Config::get('application.languages'), $segments[1]) )
    {
        return Redirect::to(URL::base() . '/' . Config::get('application.language') . $uri);
    }
}));