2010-03-28 3 views
0

Dans une configuration classique Zend Framework MVC, il semble y avoir accès à un objet _request générique à partir de l'instance modèle/vue/contrôleur comme indiqué here:Gestion d'entrée avec Zend Framework en dehors MVC

$this->_request->getPost('variablename'); 

est cette demande un objet en quelque sorte disponible dans une configuration non-MVC?

Si oui: comment l'initialiser et y accéder?

Répondre

2

Je n'utiliserais pas les objets Zend_Controller_Request_* en dehors de la structure MVC de ZF (même si possible). Vous pouvez déjà voir par le nom de classe qu'il appartient au package du contrôleur et API expose un certain nombre de méthodes qui sont complètement destinées à être utilisées dans MVC de ZF et celles-ci sont héritées par tous les sous-types. C'est bon quand vous utilisez MVC de ZF, mais pour une utilisation en dehors de cela, les objets Request en font trop. L'idée d'un objet Request est d'encapsuler et peut-être de découpler l'environnement Request actuel des Superglobals (ce qui n'est pas le cas de ZF. Toutes ces choses supplémentaires sur les modules, les contrôleurs et les actions ne devraient pas en faire partie à mon avis. Cela n'a de sens que dans ZF.

Écrire un objet Request n'est pas difficile, donc je suis sûr que vous pouvez facilement trouver une version plus légère. Voici quelques exemples de base:

En fin de compte, il est votre choix si.

+1

J'avais le même sentiment de malaise en lisant 'Controller_'. Je vais probablement rouler le mien, ou utiliser un de ceux que vous liez - ils ont l'air très propre et agréable. Merci! –

+0

(+1, mais hors de votes pour aujourd'hui.) –

1

Le contrôleur frontal initialise les objets de demande et de réponse et les transmet au routeur. Le routeur appelle l'action demandée et (généralement) ajoute le contenu renvoyé à la réponse. Ces objets sont donc disponibles dans la couche Controller à partir du MVC.

Modifier:
Le frontController utilise le code suivant pour mettre en place la demande:

$request = new Zend_Controller_Request_Http(); 

Utilisation de l'objet de la demande de cette façon est très straighforward, donc l'utiliser en dehors du contrôleur Zend ou l'application module ne devrait pas être un problème. Zend_Controller_Request_Http utilise Zend_Uri.

+0

mais que se passe-t-il si je n'utilise pas le modèle MVC? Y a-t-il un moyen de tirer parti de l'objet '_request' d'une manière ou d'une autre? Ce n'est pas vraiment un gros problème, mais j'utilise ZF comme une bibliothèque de composants de toute façon dans le projet, donc ce serait bien de changer, peut-être en conjonction avec les fonctions 'Zend_Filter_Input'. –

+0

@Pekka: vérifiez la réponse éditée. – erenon