Altorouter多语言路由

时间:2016-10-19 03:58:59

标签: routing multilingual altorouter

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

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

但是第五个参数不可用。有没有解决方法呢?

2 个答案:

答案 0 :(得分:4)

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

根据documentation,定义路线

$router->map('GET', '/[:lang]/work/sample', 'work/sample.php', 'sample')
'th'网址被点击时,

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

答案 1 :(得分:2)

  

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

     
    

但是第五个参数不可用。有没有解决方法呢?

  

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

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

source code AltoRouter.php:map

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

提供的解决方案

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