tutorial - cakephp login
¿Cómo obtengo una lista de todas las funciones dentro de un controlador en cakephp? (1)
Algo como esto debería hacer el truco: https://github.com/dereuromark/cakephp-sandbox/blob/master/Plugin/Sandbox/Controller/SandboxAppController.php#L12
Básicamente utiliza una función PHP muy básica:
$actions = get_class_methods($Controller);
Luego, obtenga los métodos de los padres:
$parentMethods = get_class_methods(get_parent_class($Controller));
Finalmente, usando array_diff obtienes las acciones reales en ese controlador:
$actions = array_diff($actions, $parentMethods);
Entonces todavía puede filtrar las acciones no deseadas.
Necesitaba seleccionar un controlador en CakePHP 2.4 y mostrar todas las funciones escritas en él. Descubrí cómo enumerar los controladores de este hilo de preguntas y respuestas en Stack Overflow, pero ahora necesito un controlador específico para obtener la lista de todas las funciones que contiene.
Aquí lo que hice
public function getControllerList() {
$controllerClasses = App::objects(''controller'');
pr($controllerClasses);
foreach($controllerClasses as $controller) {
$actions = get_class_methods($controller);
echo ''<br/>'';echo ''<br/>'';
pr($actions);
}
}
pr ($ controllerClasses); me da una lista de controladores de la siguiente manera
Array
(
[0] => AppController
[1] => BoardsController
[2] => TeamsController
[3] => TypesController
[4] => UsersController
)
sin embargo, pr ($ actions); nada... :(
aquí ve el último fragmento de trabajo de la manera que lo necesitaba
http://www.cleverweb.nl/cakephp/list-all-controllers-in-cakephp-2/
public function getControllerList() {
$controllerClasses = App::objects(''controller'');
foreach ($controllerClasses as $controller) {
if ($controller != ''AppController'') {
// Load the controller
App::import(''Controller'', str_replace(''Controller'', '''', $controller));
// Load its methods / actions
$actionMethods = get_class_methods($controller);
foreach ($actionMethods as $key => $method) {
if ($method{0} == ''_'') {
unset($actionMethods[$key]);
}
}
// Load the ApplicationController (if there is one)
App::import(''Controller'', ''AppController'');
$parentActions = get_class_methods(''AppController'');
$controllers[$controller] = array_diff($actionMethods, $parentActions);
}
}
return $controllers;
}