2010-04-12 11 views

Odpowiedz

0

Trzeba bootstrap z FrontController pierwszy, spróbuj coś takiego:

function initFoo() 
{ 
    $this->bootstrap('frontController'); 
    $req = $this->frontController->getRequest(); 
} 
+0

Brak pracy! Return: "Błąd krytyczny: wywołanie funkcji członkowskiej getParam()" –

+0

Myślę, że druga linia ma być '$ this-> getResource ('frontController')' – chelmertz

+0

Czy to nie jest _initFoo()? – jackyalcine

10

nie należy się żądania objet, ponieważ jeśli widzisz pętlę wysyłki, chodzi o to, że są bootstrap działania przed wykonaniem w żądaniu.

Jeśli chcesz zmienić niektóre aplikacje, użyj wtyczki Controller.

12

Jeśli naprawdę chcesz, możesz osiągnąć ten numerem:

public function _initRequest() 
{ 
    $this->bootstrap('frontController'); 
    $front = $this->getResource('frontController'); 
    $front->setRequest(new Zend_Controller_Request_Http()); 

    $request = $front->getRequest(); 
} 

to jednak należy unikać, ponieważ większość danych, które trzeba z obiektu Response będą dostępne po przedni kontroler jest wywoływany (np. moduł, kontroler lub nazwa działania).

Pozostałe zmienne przechowywane w obiekcie Response są wyodrębniane z tablic globalnych, takich jak $_SERVER, $_POST lub $_GET które mogą wyjątkowo odczytywać bezpośrednio w bootstrap.

Ale najprawdopodobniej chcesz użyć obiektu odpowiedzi w front controller plugin:

class Your_Controller_Plugin_PluginName extends Zend_Controller_Plugin_Abstract 
{ 
    public function preDispatch(Zend_Controller_Request_Abstract $request) 
    { 
     // do anything with the $request here 
    } 
} 
+0

preDispatch jest odpowiednią metodą, aby to zrobić. – Dharmang

-4

użyć fabryki zamiast

http://www.yourweb.com/somecontroller/index/id/12

$ id = Zend_Controller_Front :: getInstance() -> getRequest () -> id;

echo $ id;

// echo 12

+0

To na pewno nie zadziała, ponieważ kontroler frontowy nie zostałby jeszcze wywołany w czasie ładowania początkowego, a zatem paragry żądania nie będą dostępne –

+3

-1 Obiekt żądania nie jest dostępny w tym momencie. – JohnP