ivanamat / cakephp3-aclmanager

CakePHP 3.x - Acl Manager
MIT License
27 stars 27 forks source link

Varios controladores tirar error al resfrescar ACOs #12

Closed aloisejulian closed 7 years ago

aloisejulian commented 7 years ago

Buenas nuevamente,

Tengo un problema un tanto particular. Estoy haciendo un API RESTFULL y para esto cree una carpeta de controladores llamada API adentro de la carpeta Controllers, para separar lo que es backend de la api restfull.. y de esta manera tambien poder usar difrentes AUTH. Siguiendo esta guia: http://www.bravo-kernel.com/2015/04/how-to-prefix-route-a-cakephp-3-rest-api/

Pero el problema ahora cuando entro a /AclManager y apreto UPDATE ACOs... me tira error ...Class App\Controller\Api/HighlightsController does not exist.

Podrias ayudarme con esto? Gracias, Julian.

ivanamat commented 7 years ago

Buenas @aloisejulian

Primero perdona por tardar en responder, voy un poco a saturado.

Si te he entendido bien, creo que lo que quieres hacer es algo como lo que tengo montado en mi página personal.

A mi página puedes acceder de diferentes formas:

Puedes realizar peticiones para que te devuelva el contenido en los formatos html, json y xml. Si accedes de forma habitual, con un navegador web. puedes ir a la pantalla de inicio de sesión, acceder al panel y gestionar todo, los ACLs, los grupos, los roles, los usuarios, el contenido del blog, etc... y luego si quiero hacer una app para dispositivos móviles hago las peticiones para que me devuelva el contenido en formato json, por ejemplo a https://www.ivanamat.es/blog.json. Si necesito iniciar sesión desde la app para móviles, puedo utilizar BasicAuth, implementar además Oauth2 o cualquier otro tipo de "Authentication" que quieras.

Te recomiendo que le pegues un vistazo a estas páginas: https://book.cakephp.org/3.0/en/development/routing.html#prefix-routing
https://book.cakephp.org/3.0/en/development/routing.html#creating-restful-routes

Si continuas queriendo mantener tu estructura, y no has definido esas carpetas de los controladores en la app o no sabes si lo has hecho bien, te recomiendo también que le eches un vistazo a estos enlaces, es posible que tenga algo que ver:

Definir rutas de carpetas en CakePHP 3.x mediante PSR-4 https://book.cakephp.org/3.0/en/development/configuration.html#additional-class-paths

Definiendo todo bien debería funcionar lo que quieres hacer. Lo que no se si el plugin AclExtras al actualizar los ACOs tiene en cuenta las sub-carpetas como tal, si no me equivoco y con lo que he mirado por encima el código, más bien buscará en las carpetas de controladores definidas por defecto y/o por el usuario ( Siguiendo las indicaciones del enlace que te he pasado ), del mismo modo, supongo que el plugin ACL actuará sobre los controladores definidos por defecto y/o por el usuario.

Espero haberte ayudado a resolver las dudas, si te he creado más, no dudes en seguir preguntando.

Un saludo, Iván Amat

ivanamat commented 7 years ago

P.D. Veo que lo que te he comentado, es aproximadamente lo que explican en el enlace que has puesto tu al principio, no lo había leído XD. Pégale un vistazo al enlace del PSR-4, es posible que eso tenga que ver, si no te funciona busca información acerca de AclExtras y sub-directorios.

aloisejulian commented 7 years ago

@ivanamat Estuve viendo estos meses de intentar arreglar esto, pero no logro conseguirlo..

mi estructura: /src/Controller/AppController.php /src/Controllers/UsersController.php /src/Controllers/*Controllers.php (Muchos otros controllers)

Esto seria mi estructura de cakephp de backend, por otro lado queria hacer una api separada de estos controllers por ende cree una carpeta en /src/Controller/Api/ con los archivos:

/src/Controller/Api/AppController.php -> y otros controllers, para usar otro tipo de autenticacion la cual aun no active. Siguiendo la guia : http://www.bravo-kernel.com/2015/04/how-to-prefix-route-a-cakephp-3-rest-api/

Pero te repito que cuando tiro el UPDATE ACL me tira errores que no encuentra

Class App\Controller\Api/ContentsController does not exist

Por que la funcion _getControllers() en AclManagerComponent.php dentro de tu plugin me lista todo lo que esta adentro de la carpeta API, no entiendo como hacer para que me ignore esta carpeta. Si es que tengo que hacer yo por mi cuenta las modificaciones dentro del plugin o hay alguna posibildiad de de que ignore esto. No se si estoy haciendo algo mal, o que estaria pasando

Perdon de vuelta por las molestias y gracias