Altorouter多语言路由技术

6
可以使用Altorouter创建多语言路由设置吗?我想发送一个带有目标文件的变量(以便在查看时显示不同的内容),例如 -
$router->map('GET','/th/work/sample', 'work/sample.php', 'sample', 'th');

但是第五个参数无法使用。有没有任何解决方法?
2个回答

4
您可以在URL中使用模式匹配来实现这一点,如果您的语言URL足够规则。
根据文档,定义路由。
$router->map('GET', '/[:lang]/work/sample', 'work/sample.php', 'sample')

当访问URL“/th/work/sample”时,将在$lang中捕获“th”。如果需要更复杂的模式匹配,也可以指定自定义正则表达式。

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')


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接