0

Kohana は次のように URL を自動的に設定します

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 にカスタム エントリを追加する必要があります。また、メソッドごとに 1 つ追加する必要があるようで、これは本当に面倒です。たとえば、ここに抜粋があります。

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

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

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

明らかに、これは本当に迷惑です。とにかく、KohanaにURLをキャメルケース名に変換するように指示できますか?

$urlController = 'business-hub';

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

$correctController = ucwords($correctController);

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

$correctController = $correctController . '_Controller';
4

2 に答える 2

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');
于 2009-06-17T07:38:19.387 に答える
0

キャメルケースのバリアントについてはわかりませんが、このようなものが機能するはずです

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

kohanaのルート部分は正規表現なので。

もちろん、これはあなたから提供された場合に厳しく制限されています。

于 2009-06-17T02:40:44.093 に答える