Существует ли общий способ маршрутизации URL-адресов в Kohana, если в них есть символ дефиса?

StackOverflow https://stackoverflow.com/questions/1004716

  •  05-07-2019
  •  | 
  •  

Вопрос

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';

Поскольку часть маршрута в кохане является регулярным выражением.

Конечно, это строго ограничено случаями, предоставленными вами.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top