tutorial php cakephp cakephp-2.0

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; }