2009-11-29 15 views
8

Próbuję wprowadzić trasy do mojego pliku bootstrap z tym kodem;Zend Framework - pobierz kontroler frontowy z bootstrapu?

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

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

ale to nie działa, ponieważ dostaję "Wywołanie funkcji member getRouter() na nie-obiekt w ..." błąd.

Jak mogę uzyskać kontroler od bootstrap?

Odpowiedz

7

Uważam, że problemem jest to, że gdy dzwonisz

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

zasób FrontController nie został jeszcze zainicjowany.

nazwałem tę samą metodę w ten sposób (co nie będzie działać w Zend Framework 2.0, ale działa na razie):

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

Alternatywnie można mieć pewność, że kontroler frontowy jest inicjowany tak:

$this->bootstrap('FrontController'); 

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

można spróbować:

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

A jeśli napotkasz żadnych problemów są najbardziej l ikely your winowajców:

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

Czy nie powinieneś ręcznie włączać tych klas ze względu na zdolność Zend do automatycznego ładowania klas? Zazwyczaj unikałbym tego za wszelką cenę. – jackyalcine