0

Kohana アプリケーションでプログラムによってコントローラーのリストを取得する方法を探しています。

何かのようなもの:

public function build_site_map(){
     $controllers = Kohana::get_controllers();

     echo '<ul>';
     foreach($controllers as $controller){
         echo '<li><a href="'.URL::base().$controller.'">'.$controller.'</a></li>';
     }
     echo '</ul>';
}

/application/classes/controllers/ ディレクトリを読み取ることができることはわかっていますが、もっと簡単な方法があることを願っています。

ありがとう、

4

3 に答える 3

1

コントローラ ファイルのリストを取得するには、Kohana::list_files('classes/controller'). しかし、Michal が既に述べたように、コントローラー/アクションとルートの間には 1:1 の関係はありません。

于 2013-02-18T08:16:51.017 に答える
0

Kohana::get_controllers()ある種のサイトマップを取得するために簡単に呼び出すことができるメソッドはないのではないかと思います。これは、コントローラーが動的に呼び出されるためです。つまり、リクエストのURLとルート構成に基づいて、Kohanaがコントローラー(およびアクション)が存在するかどうかを確認してから呼び出します。Kohanaは、アクセス可能なすべての使用可能なコントローラーとアクションを記録しているわけではありません。

読み取るアクション( Reflectionクラス/application/classes/controllersでかなり簡単に実行できます)だけでなく、実行する必要のあるルートもあるため、ディレクトリをトラバースしてすべてのファイルのリストを取得しても、目的の結果は得られません。アカウント。

ご覧のとおり、これは潜在的に非常に複雑な問題であり、ここに貼り付けることができるコードのスニペットで簡単に答えることはできません。

実際にそのようなマップを作成するスクリプトを作成することにしたが、途中で問題が発生した場合は、この質問があまりにもオープンである場合よりも役立つ可能性があります。また、作成する場合は、他のプロジェクトに含めて共有できるモジュールとして作成することをお勧めします。

于 2013-02-16T09:47:01.017 に答える