6

是否可以使用 Altorouter 创建多语言路由设置?我想发送一个带有目标文件的变量(以便在查看时显示不同的内容),例如 -

$router->map('GET','/th/work/sample', 'work/sample.php', 'sample', 'th');

但是第五个参数不可用。有什么解决方法吗?

4

2 回答 2

4

如果您的语言 URL 足够规则,您可以在 URL 中使用模式匹配来实现此目的。

根据文档,定义路线

$router->map('GET', '/[:lang]/work/sample', 'work/sample.php', 'sample')

'th'将在点击 URL$lang时捕获。'/th/work/sample'如果您需要更复杂的模式匹配,也可以指定自定义正则表达式。

于 2016-10-25T21:39:58.063 回答
2

$router->map('GET','/th/work/sample', 'work/sample.php', 'sample', 'th');

但是第五个参数不可用。有什么解决方法吗?

那是因为 map 函数不支持第五个参数。

public function map($method, $route, $target, $name = null)

源代码 AltoRouter.php:map

如果你能以某种方式拦截并让你的代码在路由器之前工作,你可以调用match传递原始路由的函数。match 函数返回一个路由名称。但这意味着您为每种语言创建命名路由,然后您将开始欣赏@gbe 提供的解决方案

$router->map('GET', '/[:lang]/work/sample', 'work/sample.php', 'sample')

于 2016-10-27T16:48:57.250 回答