ハイフン文字が含まれている場合、KohanaでURLをルーティングする一般的な方法はありますか?
質問
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にカスタムエントリを追加する必要があります。また、 every メソッド用に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';
解決
単にダッシュを削除するのではなく、アンダースコアに変換します。そして、私はフックを使用してそれをやります。 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';
kohanaのルート部分は正規表現です。
もちろん、これはあなたが提供したケースに限定されます。
所属していません StackOverflow