Ver Mensaje Individual
  #3 (permalink)  
Antiguo 02/09/2010, 14:56
ninonna
 
Fecha de Ingreso: septiembre-2010
Mensajes: 34
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Zend duda sobre variables en plugins

Vale, ahora ya entiendo... gracias por responder tan rapido.
Con mi pregunta he intentado simplificar mi caso, quiero decir, estoy intentando implementar un control de acceso a los modulos mediante Zend_Acl, pero quiero hacerlo de forma dinámica, es decir que inicialmente estan las reglas de acceso en una bd y hay que cargarlas sobre mi classe que extiende de zend_acl. Lo que estaba intentando hacer era:
Por un lado, en el bootstrap creaba la classe myacl que extiende de zend_Acl. En esta se cargaban los recursos y los roles (que son fijos), pero no se cargaban las reglas, se dejaba para despues.
A continuación se creaba el pluguin controlACL pasandole como parámetro la instancia de la clase myacl , esta se guardava en la variable _acl del plugin, y a continuación se registraba el plugin en el frontController.
Hasta aqui todo bien,he introducido un par de reglas a mano en la classe myacl, para comprobar si funcionaba, y sí, funcionaba ok.
Al intentar cargar más reglas desde el controlador indexController (obteniendo el plugin del frontController y accediendo a la var _acl del mismo y añadiendole las nuevas reglas con un metodo addRegla() ) aparentemente se cargaban ya que le hice un dump() al finalizar y el objeto ACL mostrado realmente contenia las ultimas reglas añadidas, pero al redireccionar al homeController, volvia a hacer el mismo dump (obteniendo el plugin del frontController y accediendo a la var _acl del mismo) y en el objeto ACL no aparecian las ultimas reglas añadidas desde el indexController, sin embargo el id de la instancia de objeto ACL era el mismo, con lo que no entendia nada.
Ahora ya se porque no funcionava, y el problema es el siguente, :) como hago para implementar ACL de forma dinamica??
La solucion que he pensado, es la siguiente:
Ya no hago nada en el bootstrap referente a este tema. En el indexController despues de haber autenticado al usuario, busco en la bd las reglas que conciernen al rol del usuario que acaba de iniciar sesión, creo la clase myACL que extiende de Zend_Acl, y le añado las reglas. A continuación creo el plugin controlACL pasandole la instancia de la clase myAcl al contructor y finalmente registro el plugin en el frontController y redirecciono al /home.
No se si funcionaria, pero me estoy dando cuenta al escribir, que creo que me pasará igual que antes con el ejemplo del contador, en el /home se habran perdido los datos, es así?
Igualmente no se si la alternativa que he pensado es apropiada, soy muy nueva en zf, y muchas veces hago cosas que pueden funcionar pero quizas no son 'correctas', estoy intendando seguir MVC con modulos, y a veces no se donde poner las cosas.
Espero no haber montado demasiado lio, no se me ocurre como hacerlo.
Gracias de antemano