Llevo toda la tarde liado con esto y no doy con la solución, o igual es que no se puede.
La idea es que un Controller_Plugin se encargue de montar el Acl.
Los Resources, se basan en MODULE_CONTROLLER_ACTION.
Como son bastantes, y van aumentando, intento crear un sistema para añadirlos automáticamente a la DB, pero filtrando las rutas que se inserten mal.
De modo, que la secuencia sería:
1.- Entras en: dominio.com/default/index/index
Esto pide un Resource de tipo DEFAULT_INDEX_INDEX
2.- Primero comprobar si la ruta se puede despachar (Aquí es donde me encuentro atascado)
3.a.- Si la ruta se puede despachar, comprueba si existe el Resource y pasa al punto 4.a o 4.b.
3.b - Si la ruta no se puede despachar, da el error correspondiente y no comprueba el resoource.
4.a- Si existe el resource lo pasa a $acl->isAllowed()
4.b- Si no existe el resource, lo añade a la Db, limpia la cache y recarga la página.
Estoy probando con esto, pero resulta que si el module o el controller esta mal, si me retorna false, pero si es el action el que esta mal me retorna true.
Al retornar true, por ejemplo, puede crearme un Resource de tipo DEFAULT_INDEX_IND, creando entradas inecesarias.
Código PHP:
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
{
$front = Zend_Controller_Front::getInstance();
if( $front->getDispatcher()->isDispatchable($request) )
{
// dispatchable
}
else
{
// else show the error
}
}
Saludos,