Как получить список имен контроллеров в CakePHP для проверки данных пользователя? - PullRequest
3 голосов
/ 22 мая 2009

Я создаю сайт CakePHP для клиента, и у меня возникла небольшая интересная проблема. Они хотят добавить новую функцию, с помощью которой пользователи могут создавать свои собственные целевые страницы на сайте, используя этот тип URL: http://mainsite.com/username. Так как это сайт Cake, существует множество значений для username, которые могут привести к всевозможным сумасшествиям при маршрутизации, особенно если они выберут имя пользователя, совпадающее с именем контроллера на сайте.

Мой подход выглядит примерно так: в функции beforeValidate контроллера Users проверьте предоставленное имя пользователя по списку всех имен контроллеров и верните false, если есть совпадение. У меня вопрос - как я могу получить список всех имен контроллеров (если не считать циклического перебора файлов в /app/controllers)? Возможно ли это сделать?

Спасибо!

Ответы [ 2 ]

6 голосов
/ 22 мая 2009

Возможно, вы могли бы использовать CakePHP 1.x

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

CakePHP 2.x

$Controllers = App::objects('controller');
2 голосов
/ 22 мая 2009

Отлично! Начало моего решения:

$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(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...