2009-05-22 5 views
3

私はクライアント用のCakePHPサイトを構築していますが、面白い問題があります。ユーザーは、このタイプのURL(http://mainsite.com/username)を使用してサイト内に独自のランディングページを作成できる新しい機能を追加したいと考えています。これはケーキサイトなので、特にサイト内のコントローラと同じユーザー名を選択した場合は、すべての種類のルーティングの狂気につながる多くの値がusernameです。ユーザデータを検証するためにCakePHPでコントローラ名のリストを取得するにはどうすればよいですか?

私のアプローチは次のようなものです:ユーザコントローラのbeforeValidate機能では、すべてのコントローラ名のリストに対して提供されたユーザ名をチェックし、一致するものがあればfalseを返します。私の質問は - どのようにすべてのコントローラの名前のリストを得ることができます(実際にはファイルの上にループしていない/app/controllers)?これも可能ですか?

ありがとうございます!

答えて

6

おそらく CakePHPの1.1

$Controllers = Configure::listObjects('controller') 

のCakePHP 2.xの

$Controllers = App::objects('controller'); 
+2

更新:あなたは、CakePHP 2.xのを使用している場合、リストは '$コントローラー=のApp ::オブジェクト(「コントローラ」)として取得することができます;'。 – Fr0zenFyr

2

パーフェクトを使用することができます!私の解決策の始まり:将来の訪問者のための

$human_controllers = Configure::listObjects('controller'); 
$u_controllers = array(); 
foreach($human_controllers as $c){ 
    $u_controllers[] = Inflector::underscore($c); // converts "PageContents" to "page_contents" 
} 
debug($u_controllers); die(); 
関連する問題