2009-11-29 15 views
8

Sto cercando di implementare percorsi nel mio file bootstrap con questo codice;Zend Framework: ottieni il controller anteriore dal bootstrap?

protected function _initRoutes() 
{ 
    $router = $this->getResource('frontController')->getRouter(); 

    $router->addRoute(
     'profil', 
     new Zend_Controller_Router_Route 
     (
      'profil/:username', 
      array 
      (
       'controller' => 'users', 
       'action' => 'profil' 
      ) 
     ) 
    ); 
} 

ma non funziona da quando ho 'chiamata a una funzione membro getRouter() su un non-oggetto in ...' errore.

Come posso ottenere il controller dal bootstrap?

risposta

7

Credo che il problema è che dove si sta chiamando

$this->getResource('frontController')->getRouter() 

la risorsa FrontController non è ancora stato inizializzato.

ho chiamato lo stesso metodo in questo modo (che non funzionerà in Zend Framework 2.0 ma funziona per ora):

Zend_Controller_Front::getInstance()->getRouter(); 

In alternativa si può essere certi che il front controller viene inizializzato in questo modo:

$this->bootstrap('FrontController'); 

$front = $this->getResource('FrontController'); 
5

si potrebbe provare:

$front = Zend_Controller_Front::getInstance(); 
$router = $front->getRouter(); 

E se si esegue in eventuali problemi di questi sono più l i tuoi colpevoli:

require_once 'Zend/Controller/Front.php';  
require_once 'Zend/Controller/Router/Route.php'; 
+0

Non dovresti includere manualmente tali classi a causa dell'abilità di Zend di caricare automaticamente le classi? Normalmente lo eviterei a tutti i costi. – jackyalcine

Problemi correlati