2010-04-12 6 views

Répondre

0

Vous devez amorcer le frontController d'abord, essayer quelque chose comme:

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

Aucun travail! Retour: "Erreur fatale: Appel à une fonction membre getParam()" –

+0

Je pense que la deuxième ligne est supposée être '$ this-> getResource ('frontController')' – chelmertz

+0

Aussi, ce ne serait-ce pas _initFoo()? – jackyalcine

10

Vous ne devriez pas obtenir le objet de la demande, car si vous voyez la boucle d'expédition, l'idée est que le bootstrap actions avant de s'exécuter dans une requête.

Si vous avez besoin de modifier une partie de l'application, utilisez un plugin de contrôleur pour cela.

12

Si vous voulez vraiment, vous pouvez atteindre cet appel:

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

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

Cependant, cela devrait être évité, car la plupart des données dont vous avez besoin de l'objet Response sera disponible après que le contrôleur avant est envoyé (exemple: module, contrôleur ou nom de l'action).

Les autres variables stockées dans l'objet de réponse sont extraits de tableaux globaux tels que $_SERVER, $_POST ou $_GET que vous pouvez exceptionnellement lire directement bootstrap.

Mais le plus probable, vous voulez utiliser l'objet de réponse à 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 est la méthode appropriée pour cela. – Dharmang

-4

utiliser l'usine à la place

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

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

echo $ id;

// echo 12

+0

Cela ne fonctionnera certainement pas puisque le contrôleur frontal n'aurait pas encore été envoyé au moment du bootstrap et donc les paramètres de la requête ne seront pas disponibles –

+3

-1 L'objet de requête n'est pas disponible à ce moment. – JohnP

Questions connexes