我试图传递"语言"从CakePHP3路线到动作的参数,所以我可以为这些页面设置语言。
$routes->connect('/es/hola', ['controller' => 'StaticPages', 'action' => 'welcome']);
$routes->connect('/en/hello', ['controller' => 'StaticPages', 'action' => 'welcome']);
我可以使用这样的dinamyc参数:
$routes->connect('/:lang/hola', ['controller' => 'StaticPages', 'action' => 'welcome'], ['pass' => ['lang']]);
但问题是这条路线会匹配:
/en/hola
/es/hello
...
/fr/hello
我认为这可能是在CakePHP3中做到这一点的另一种最佳方式,但我无法找到它。
谢谢!
答案 0 :(得分:2)
如果您不希望它是动态的,那么您需要将其传递给默认值,即与控制器和操作一起传递:
$routes->connect(
'/es/hola',
[
'controller' => 'StaticPages',
'action' => 'welcome',
'lang' => 'es'
]
);
在控制器中,参数将通过请求对象提供:
$lang = $this->request->getParam('lang'); // param('lang') before CakePHP 3.4
如果您希望将其作为参数传递给控制器操作,您仍然可以将其定义为通过pass
选项传递。
另见