Altorouter 多语言路由
Altorouter multilingual routing
是否可以使用 Altorouter 创建多语言路由设置?
我想发送一个带有目标文件的变量(以便它在查看时显示不同的内容),例如-
$router->map('GET','/th/work/sample', 'work/sample.php', 'sample', 'th');
但是第五个参数不可用。有什么解决方法吗?
如果您的语言 URL 足够规则,您可以在 URL 中使用模式匹配来实现此目的。
根据documentation,定义路由
$router->map('GET', '/[:lang]/work/sample', 'work/sample.php', 'sample')
当 '/th/work/sample'
URL 被击中时, 将在 $lang
中捕获 'th'
。如果您需要更复杂的模式匹配,也可以指定自定义正则表达式。
$router->map('GET','/th/work/sample', 'work/sample.php', 'sample', 'th');
But that fifth parameter isn't available. Is there any workaround for this?
那是因为map函数不支持第五个参数。
public function map($method, $route, $target, $name = null)
source code AltoRouter.php:map
如果您能以某种方式拦截并让您的代码在路由器之前工作,您可以调用传入原始路由的 match
函数。匹配函数returns 你一个路由名称。但这意味着您为每种语言创建命名路由,然后您将开始欣赏@gbe
提供的解决方案
$router->map('GET', '/[:lang]/work/sample', 'work/sample.php', 'sample')
是否可以使用 Altorouter 创建多语言路由设置? 我想发送一个带有目标文件的变量(以便它在查看时显示不同的内容),例如-
$router->map('GET','/th/work/sample', 'work/sample.php', 'sample', 'th');
但是第五个参数不可用。有什么解决方法吗?
如果您的语言 URL 足够规则,您可以在 URL 中使用模式匹配来实现此目的。
根据documentation,定义路由
$router->map('GET', '/[:lang]/work/sample', 'work/sample.php', 'sample')
当 '/th/work/sample'
URL 被击中时, 将在 $lang
中捕获 'th'
。如果您需要更复杂的模式匹配,也可以指定自定义正则表达式。
$router->map('GET','/th/work/sample', 'work/sample.php', 'sample', 'th');
But that fifth parameter isn't available. Is there any workaround for this?
那是因为map函数不支持第五个参数。
public function map($method, $route, $target, $name = null)
source code AltoRouter.php:map
如果您能以某种方式拦截并让您的代码在路由器之前工作,您可以调用传入原始路由的 match
函数。匹配函数returns 你一个路由名称。但这意味着您为每种语言创建命名路由,然后您将开始欣赏@gbe
$router->map('GET', '/[:lang]/work/sample', 'work/sample.php', 'sample')