2009-10-21 4 views
1

J'ai créé un contrôleur API avec des actions pour cracher JSON pour mon application et j'ai désactivé la mise en page et le rendu dans sa méthode init(), donc je n'ai pas de vue scripts pour ce contrôleur.Zend Framework demandant un script de vue malgré setNoRender

J'essaie d'utiliser mon apiController::treeAction ailleurs dans l'application via un actionHelper pour sortir du code JSON en ligne. Je peux accéder à l'action directement via /api/tree/id/1 qui me montre les données JSON. Mais quand j'essaie quérir d'un autre contrôleur avec

$this->view->action('tree', 'api', null, array('id'=>$id)) 

Je reçois une exception

Message: script 'api/tree.phtml' not found in path ([...]\application\views\scripts\) 

Il est vrai, ce fichier n'existe pas, mais je ne ai pas besoin pour. Qu'est-ce que je fais mal?

+0

Avez-vous essayé de désactiver ViewRenderer et la mise en page à la fin de l'action? Le désactiver dans l'init devrait fonctionner, donc si ça marche quand c'est à la fin de l'action quelque chose ne va pas ailleurs. – smack0007

+0

Je n'ai pas pu résoudre ce problème. À la fin, j'ai réarrangé mes actions pour contourner cela. – Tamlyn

Répondre

1

Vous pouvez regarder l'aide à l'action Context Switch.

Vous pouvez spécifier un contexte d'action 'json' pour cette action, puis il gèrera automatiquement la désactivation de la mise en page et affichera le rendu du script.