4

我正在尝试实现多语言 URL。因此,我希望有这样的 URL: 到目前为止一切都很好,我在 filters.php 中使用
/de/ueber-uns/kontakt来检查给定的语言环境。我想我需要在 routes.php 中为每种语言的每个控制器操作提供一个路由。/en/about-us/contact
App::before()

所以我想到了动态创建文件routes.php。我只需要知道如何访问所有可用的控制器或在代码中获取所有已注册的路由(如工匠路由,但不使用 CLI)。

所以问题是:

  • 多语言网址的一般方法是否正确?
  • 是否可以访问所有控制器以以某种方式提取方法?
  • 我如何获得在 \Illuminate\Routing\Router.php 中使用的 RouteCollection?

先感谢您!

4

1 回答 1

4

我最终做了以下事情:

1) routes.php 中的路由是使用自定义工匠命令动态创建的。它解析所有控制器并为支持的每种语言的每个操作创建路由。语言字符串由 Route::get('{lang}/customer/login', 'CustomerController@getLogin')->where('lang', '[az]{2}') 等路由处理。这样,用户只需更改语言字符串,网站就会以正确的语言加载(如果支持)。不同语言的路由都导致相同的控制器操作。对于英语以外的这些语言,我需要翻译(/app/lang 中的 routes.php)。

2) 在构造函数中为那些动作被翻译的控制器设置了一个前置过滤器。它基本上检查语言字符串是否有效,如果不是则替换它。所选语言将在会话中设置。

我希望任何人都可以使用它:)

于 2013-06-13T07:17:46.297 回答