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