Existe uma maneira genérica para URLs de rota em Kohana quando há o hífen neles?
Pergunta
Kohana configura automaticamente URLs gosta assim
http://www.example.com/controller/method/argument1 / argument2 / etc
Agora, eu gosto de usar o traço para separar as minhas palavras na URL, e eu tenho um endereço como assim
http://www.example.com/business-hub
O meu controlador é intitulado BusinessHub_Controller. O que é me irritante, é para / business-hub / para coincidir com o controlador BusinesHub, eu preciso adicionar uma entrada personalizada no routes.php sob a aplicação de configuração da pasta /. Parece também tenho de acrescentar um para todas método, que é realmente irritante. Por exemplo, aqui está um trecho,
$config['business-hub'] = 'businesshub/index/';
$config['business-hub/logout'] = 'businesshub/logout';
$config['business-hub/media-releases'] = 'businesshub/mediareleases';
Obviamente, isso é realmente irritante. Existe uma maneira que eu posso dizer Kohana para converter a URL para o nome camelCase, algo como
$urlController = 'business-hub';
$correctController = str_replace('-', ' ', $urlController);
$correctController = ucwords($correctController);
$correctController = str_replace(' ', null, $correctController);
$correctController = $correctController . '_Controller';
Solução
Ao invés de apenas eliminasse traços, eu convertê-los para sublinhados; e eu fazê-lo usando um gancho. Certifique-se os ganchos estão habilitados no config / config.php e, em seguida, criar um arquivo em ganchos chamado, digamos, 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');
Outras dicas
Para a variante camelCase eu não sei, mas algo como isso deve funcionar
$config['(a-z)+-?(a-z)*/(a-z)+-?(a-z)*'] = '$1$2/$3$4';
Como a parte rota em kohana é uma expressão regular.
Claro que isto é severamente limitada aos casos previstos por você.