Существует ли общий способ маршрутизации URL-адресов в Kohana, если в них есть символ дефиса?
Вопрос
Kohana автоматически устанавливает URL-адреса примерно так
http://www.example.com/controller/method/argument1 / аргумент2 / и т.д. р>
Теперь мне нравится использовать тире для разделения моих слов в URL, и у меня есть такой адрес
http://www.example.com/business-hub
Мой контроллер называется BusinessHub_Controller. Что меня раздражает, так это то, что / business-hub / соответствует контроллеру BusinesHub, мне нужно добавить пользовательскую запись в route.php в папке application / config. Также кажется, что мне нужно добавить один для каждого метода, что действительно раздражает. Например, вот выдержка,
$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';
Решение
Вместо того, чтобы просто удалять штрихи, я бы преобразовал их в подчеркивание; и я бы сделал это с помощью крючка. Убедитесь, что хуки включены в 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');
Другие советы
Для варианта camelCase я не знаю, но что-то вроде этого должно работать
$config['(a-z)+-?(a-z)*/(a-z)+-?(a-z)*'] = '$1$2/$3$4';
Поскольку часть маршрута в кохане является регулярным выражением.
Конечно, это строго ограничено случаями, предоставленными вами.