2011-01-25 5 views
4

J'ai une action dans un contrôleur qui est censé afficher différents types de sortie en fonction de la valeur dans une liste déroulante sur un formulaire.Zend Framework commutation de vues en action

J'ai écrit un objet Templater (s'étend de Zend_View_Abstract) pour les différents types de vue.

J'ai essayé de courir le code suivant:

public function generateDocumentAction() 
{ 
    //...some code to set $view depending on post data   
    // e.g. $view = new TemplaterOdt(); //view as an OpenOffice document 

    $this->_helpers->getHelper('viewRenderer')->setView($view); 

    $this->view->myvar = $form->getValue('some_value'); 
} 

mais $this->view est toujours celui par défaut (un templater Smarty) qui qui est situé dans /public/index.php

J'ai regardé dans la documentation à et il dit que vous pouvez définir la vue dans la fonction init() dans le contrôleur http://framework.zend.com/manual/en/zend.view.scripts.html mais cela définirait la vue pour le contrôleur entier dont je ne veux pas.

Comment puis-je changer le type de sortie pour cette action?

+0

pourquoi ne voulez-vous pas définir l'affichage de l'ensemble contrôleur? appelez-vous plus d'une action dans ce contrôleur lors d'une seule requête? – jah

+0

Je vous recommande d'installer ceci dans le plugin 'Bootstrap' ou le contrôleur, au lieu du contrôleur. – takeshin

+0

Le contrôleur fait tout ce qui concerne un objet dans le modèle, c'est-à-dire ajouter, éditer, supprimer et il doit afficher du code HTML. – Hexdoll

Répondre

7

Si vous voulez juste changer le modèle à rendre, utilisez:

$this->_helper->viewRenderer('viewscripthere'); 
Questions connexes