如何在CakePHP中获取控制器名称列表,以验证用户数据?

如何在CakePHP中获取控制器名称列表,以验证用户数据?,php,cakephp,Php,Cakephp,我正在为一个客户构建一个CakePHP站点,我遇到了一个有趣的问题。他们希望添加一项新功能,用户可以使用此类型的URL在站点中创建自己的登录页:http://mainsite.com/username。由于这是一个蛋糕网站,username有很多值,这会导致各种路由狂热,特别是如果他们碰巧选择了一个与网站中的控制器相同的用户名 我的方法是这样的:在Users控制器的beforeValidate函数中,对照所有控制器名称的列表检查提供的用户名,如果存在匹配项,则返回false。我的问题是-如何获得

我正在为一个客户构建一个CakePHP站点,我遇到了一个有趣的问题。他们希望添加一项新功能,用户可以使用此类型的URL在站点中创建自己的登录页:
http://mainsite.com/username
。由于这是一个蛋糕网站,
username
有很多值,这会导致各种路由狂热,特别是如果他们碰巧选择了一个与网站中的控制器相同的用户名

我的方法是这样的:在Users控制器的
beforeValidate
函数中,对照所有控制器名称的列表检查提供的用户名,如果存在匹配项,则返回
false
。我的问题是-如何获得所有控制器名称的列表(除了在
/app/controllers
中实际循环文件之外)?甚至有可能做到这一点吗

谢谢

您可能需要 CakePHP1.x

$Controllers = Configure::listObjects('controller')
CakePHP2.x

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

太好了!我的解决方案的开始:

$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(); 

针对未来访问者的更新:如果您使用的是CakePHP 2.x,则可以将列表检索为
$Controllers=App::objects('controller')