Kohana içinde rota URL'ler için genel bir yolu var mı tire onları olduğunda?

2 Cevap php

Kohana böylece otomatik gibi URL'leri kurar

http://www.example.com/controller/method/argument1/argument2/etc

Şimdi URL sözlerimi ayırmak için çizgi kullanmak ister, ve ben gibi bir adresi var

http://www.example.com/business-hub

Benim denetleyicisi BusinessHub_Controller başlıklı. Ne beni rahatsız edici, / iş-hub / BusinesHub denetleyicisi maç için, ben application / config klasörü altında routes.php içine özel bir girdi eklemek için ihtiyaç vardır. Ayrıca ben gerçekten sinir bozucu every yönteminde, bir tane eklemek zorunda görünüyor. Örneğin, burada bir alıntıdır,

$config['business-hub'] = 'businesshub/index/';

$config['business-hub/logout'] = 'businesshub/logout';

$config['business-hub/media-releases'] = 'businesshub/mediareleases';

Açıkçası, bu gerçekten can sıkıcı bir durum. Zaten ben, camelCase adı URL'yi dönüştürmek gibi bir şey Kohana söyleyebilir mi var

$urlController = 'business-hub';

$correctController = str_replace('-', ' ', $urlController);

$correctController = ucwords($correctController);

$correctController = str_replace(' ', null, $correctController);

$correctController = $correctController . '_Controller';

2 Cevap

Aksine sadece tire sıyırma daha, ben onları altını dönüştürmek istiyorum; ve ben bir kanca kullanarak yapardım. Emin kanca config / config.php etkin olduğundan emin olun ve sonra dashes_to_underscores.php, diyelim ki, denilen kanca bir dosya oluşturun:

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 varyant için bilmiyorum ama böyle bir şey çalışması gerekir

$config['(a-z)+-?(a-z)*/(a-z)+-?(a-z)*'] = '$1$2/$3$4';

Kohana rota parçası normal bir ifade gibi.

Tabii ki bu severly size sağladığı durumlarda sınırlıdır.