Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/05/2012, 19:57
Avatar de ApipeMc
ApipeMc
 
Fecha de Ingreso: septiembre-2010
Ubicación: Medellín, Antioquia, Colombia
Mensajes: 76
Antigüedad: 13 años, 6 meses
Puntos: 1
Pregunta Enviar 2 roles al zend navigation con zend acl

Tengo la siguiente inquietud.
Este es mi archivo xml de navigation donde esta los permisos y los roles
Código XML:
Ver original
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <config>
  3.     <nav>  
  4.         <root>
  5.             <label>Root</label>
  6.             <uri>/</uri>           
  7.             <pages>
  8.                 <saga>
  9.                     <label>Saga</label>
  10.                     <uri>#</uri>
  11.                 </saga>
  12.                 <admin>
  13.                     <label>Administración</label>                  
  14.                     <class>dont-clobber-me</class>                             
  15.                     <uri>#dropdown</uri>
  16.                     <resource>default:index</resource>
  17.                     <privilege>admin</privilege>
  18.                     <pages>
  19.                         <halfway>                              
  20.                             <label>Intermedia</label>
  21.                             <module>default</module>
  22.                             <controller>index</controller>
  23.                             <action>halfway1</action>
  24.                             <resource>default:index</resource>
  25.                             <privilege>halfway</privilege>                         
  26.                         </halfway>                     
  27.                     </pages>                   
  28.                 </admin>
  29.                 <docente>
  30.                     <label>Ingreso Materia</label>                 
  31.                     <class>dont-clobber-me</class>                             
  32.                     <uri>#dropdown</uri>
  33.                     <resource>default:index</resource>
  34.                     <privilege>docente</privilege>
  35.                     <pages>
  36.                         <insert>                               
  37.                             <label>Insert</label>
  38.                             <module>default</module>
  39.                             <controller>index</controller>
  40.                             <action>insert</action>
  41.                             <resource>default:index</resource>
  42.                             <privilege>insert</privilege>                          
  43.                         </insert>                      
  44.                     </pages>
  45.                 </docente>             
  46.                 <logout>
  47.                     <label>Cerrar Sessión</label>
  48.                     <module>default</module>
  49.                     <controller>index</controller>
  50.                     <action>logout</action>
  51.                     <resource>default:index</resource>
  52.                     <privilege>logout</privilege>              
  53.                 </logout>              
  54.             </pages>
  55.         </root>
  56.     </nav>
  57. </config>

Otra con la configuracion de mi ACL
Código PHP:
<?php
class App_Acl{
    
    public 
$acl;
    
    public function 
__construct()
    {
        
$this->acl = new Zend_Acl();    
    }    
    
    public function 
setRoles()
    {        
        
$this->acl->addRole(new Zend_Acl_Role('admin'));
        
$this->acl->addRole(new Zend_Acl_Role('docente'));
        
$this->acl->addRole(new Zend_Acl_Role('familia'));
        
$this->acl->addRole(new Zend_Acl_Role('admon'));
    }    
    
    public function 
setResources()
    {
        
$this->acl->add(new Zend_Acl_Resource('default:index'));        
        
$this->acl->add(new Zend_Acl_Resource('default:error'));
    }
    
    public function 
setPrivilages()
    {                
        
$this->acl->allow('admin',   'default:index', array('halfway','logout','admin'));
        
$this->acl->allow('docente''default:index', array('docente','insert','logout'));
    }
    
    public function 
setAcl()
    {
        
Zend_Registry::set('Zend_Acl'$this->acl);
    }
    
}
y mi archivo Bootstrap
Código PHP:
/**
     * init Zend_ACL 
     */    
    
    
protected function _initACL()
    {
        if(
App_Usuario::isLogged())
        {
            
$acl  = new App_Acl();
            
$acl->setRoles();
            
$acl->setResources();
            
$acl->setPrivilages();
            
$acl->setAcl();
        }        
    }    

protected function 
_initView ()
    {
        
$view = new Zend_View();
        
$view->setEncoding('UTF-8');
        
$view->doctype('HTML5');
        
$view->headMeta()
             ->
appendHttpEquiv('Content-Type''text/html;charset=utf-8');
        
$view->headTitle('')
             ->
setSeparator(' - ');
        
$view->headTitle("SAGA");
        
        if(
App_Usuario::isLogged())
        {
            
            
$view->registerHelper(new App_View_Helper_Menu(), 'menu');
            
            
$navContainerConfig = new Zend_Config_Xml(APPLICATION_PATH'/configs/navigation.xml''nav');
            
$navContainer         = new Zend_Navigation($navContainerConfig);
            
            
$view->navigation($navContainer)
                 ->
menu()
                 ->
setMinDepth(1)
                 ->
setUlClass('nav nav-pills')
                 ->
setAcl(Zend_Registry::get('Zend_Acl'))
                 ->
setRole('admin');
        }
        
        
        
$viewRenderer Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
        
$viewRenderer->setView($view);    
        
        return 
$view;
    } 
Tengo el siguiente inconveniente. todo funciona normalmente si envio solo un rol al
Código PHP:
$view->navigation($navContainer)
                 ->
menu()
                 ->
setMinDepth(1)
                 ->
setUlClass('nav nav-pills')
                 ->
setAcl(Zend_Registry::get('Zend_Acl'))
                 ->
setRole('admin'); 
Pero necesito que le cargue 2 osea:
Código PHP:
$view->navigation($navContainer)
                 ->
menu()
                 ->
setMinDepth(1)
                 ->
setUlClass('nav nav-pills')
                 ->
setAcl(Zend_Registry::get('Zend_Acl'))
                 ->
setRole('admin','docente'); 
Nose si esto se puede hacer o hay otra manera de realizarlo, alguien me podria solucionar esta duda.