2010-04-12 7 views

Antwort

0

Sie müssen die frontcontroller erste Bootstrap, versuchen Sie so etwas wie:

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

Keine Arbeit! Return: "Fataler Fehler: Aufruf an eine Member-Funktion getParam()" –

+0

Ich denke, die zweite Zeile soll '$ this-> getResource ('frontController')' – chelmertz

+0

Auch wäre das nicht _initFoo()? – jackyalcine

10

Sie die Anfrage nicht objet bekommen sollte, denn wenn Sie die Dispatch Schleife zu sehen, ist die Idee, dass die Bootstrap sind Aktionen vor der Ausführung in einer Anfrage.

Wenn Sie einige der Anwendung ändern müssen, verwenden Sie ein Controller-Plugin, um dies zu tun.

12

Wenn Sie wirklich wollen, können Sie diese Berufung erreichen:

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

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

Dies sollte jedoch vermieden werden, da die meisten Daten, die Sie aus dem Response-Objekt müssen verfügbar sein wird, nachdem die Front-Controller geschickt wird (zB Modul, Controller oder Aktionsname).

Die anderen im Response-Objekt gespeicherten Variablen werden von den globalen Arrays wie $_SERVER, $_POST oder $_GET extrahiert, die Sie außerordentlich in Bootstrap direkt lesen kann.

Aber wahrscheinlich wollen Sie Response-Objekt in front controller plugin verwenden:

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 ist die richtige Methode, um dies zu tun. – Dharmang

-4

verwenden, um die Fabrik statt

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

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

echo $ id;

// echo 12

+0

Dies wird sicherlich nicht funktionieren, da der Frontcontroller zum Zeitpunkt des Bootstrap noch nicht versandt worden wäre und daher die Anfrageparameter nicht verfügbar sind. –

+3

-1 Das Anfrageobjekt ist zu diesem Zeitpunkt nicht verfügbar. – JohnP