【发布时间】:2017-06-12 12:35:36
【问题描述】:
我正在 Laravel 5.3 应用程序中创建本地化。它必须遵循这样的要求:
如果路由路径包含locale前缀,locale要根据这个前缀设置
如果没有路由前缀,应该设置为英文。
例如:
A) mysite.org/pl/blog/133 将语言环境设置为 pl 并使用参数 113 调用 BlogController
B) mysite.org/en/blog/133 将语言环境设置为 en 并使用参数 113 调用 BlogController
C) mysite.org/blog/133 的行为方式与之前相同。
为了实现这一点,我使用了以下代码:
#routes/web.php
require base_path('routes/common.php');
// TODO set default locale to en
Route::group(['prefix' => '{locale}'], function($group) {
require base_path('routes/common.php');
// TODO set locale to $locale
foreach ($group -> getRoutes() as $route) {
$route->where('locale', 'en|ru|pl|ua|de');
}
});
#routes/common.php
Route::get('/blog/{id}', function($id) {
// Return view of respective blogpost
});
问题在于,当我使用路径 A 或 B 时,我在操作函数中获得了一个额外的第一个参数,该参数源自语言环境前缀。
我可以隐藏这个参数吗?或者有没有办法以更架构正确的方式实现我想要的?
【问题讨论】:
标签: php laravel localization laravel-routing