Kohana会自动设置这样的网址
http://www.example.com/controller/method/argument1/argument2/etc
现在我喜欢用破折号分隔我在URL中的单词,我有一个像这样的地址
http://www.example.com/business-hub
我的控制器标题为BusinessHub_Controller。令我讨厌的是/ business-hub /匹配BusinesHub控制器,我需要在application / config文件夹下的routes.php中添加一个自定义条目。我似乎还要为每个方法添加一个,这真的很烦人。例如,这是摘录,
$config['business-hub'] = 'businesshub/index/';
$config['business-hub/logout'] = 'businesshub/logout';
$config['business-hub/media-releases'] = 'businesshub/mediareleases';
显然,这真的很烦人。无论如何,我可以告诉Kohana将URL转换为camelCase名称,如
$urlController = 'business-hub';
$correctController = str_replace('-', ' ', $urlController);
$correctController = ucwords($correctController);
$correctController = str_replace(' ', null, $correctController);
$correctController = $correctController . '_Controller';
答案 0 :(得分:2)
不是仅仅删除破折号,而是将它们转换为下划线;我会用钩子做的。确保在config / config.php中启用了挂钩,然后在挂钩中创建一个名为dashes_to_underscores.php的文件:
function convert_dashes_to_underscores_in_url()
{
Router::$current_uri = str_replace('-', '_', Router::$current_uri);
}
Event::add_before(
'system.routing',
array('Router', 'setup'),
'convert_dashes_to_underscores_in_url');
答案 1 :(得分:0)
对于camelCase变种,我不知道,但这样的事情应该起作用
$config['(a-z)+-?(a-z)*/(a-z)+-?(a-z)*'] = '$1$2/$3$4';
由于kohana中的路线部分是正则表达式。
当然,这仅限于您提供的案例。