Frage Verwenden Sie View-Helfer in Controllern in Zend Framework


Ich habe einen Controller, der mit AJAX aufgerufen wird (sendet JSON-Daten), also verwende ich keine Ansicht.

Ich muss ein persönliches verwenden Hilfe anzeigen um meine Daten zu formatieren, aber in meinem Controller.

Ist das möglich ?

Oder vielleicht bin ich es falsch machen (vielleicht sollte ich eine Aussicht haben, aber wie mit JSON)?


18
2018-03-08 12:59


Ursprung


Antworten:


Sie können über den Controller auf einen beliebigen ViewHelper zugreifen

$this->view->helpername(/*params*/);
// or
$helper = $this->view->getHelper('helpername');
// or
$broker = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
$broker->getView()->helpername(/*params*/);

Sehen Zend: Wie benutzt man eine benutzerdefinierte Funktion von einem View Helper im Controller?

Sie könnten jedoch Recht haben, dass Sie es falsch machen (lustiges Bild übrigens), aber ich kann nicht wirklich von deiner Frage erzählen. Bitte präzisieren Sie, warum Sie den View-Helfer aufrufen müssen und was er formatieren soll.


43
2018-03-08 13:05



Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');

Stellen Sie sicher, dass die zurückgegebene Ansicht die gewünschte Ansicht ist. Denn in der Folge kann die Ansicht überschrieben werden und auf dem Controller haben Sie eine neue Ansicht.

Und all diese Werte, die Sie in der Ansicht des Action-Helfers und Ähnlichem einstellen ... bevor der Controller gestartet wird? Alles weg mit dem Wind!

Testen Sie also, bevor Sie davon ausgehen, dass Sie eine Ansichtsressource erhalten. Es ist wirklich die gleiche Ansicht Ressource, die Sie erwarten, und dass alle Ihre Vars sind immer noch da.

Sie können überrascht sein, wie ich war!


4
2018-02-13 11:21



Sie können eine Instanz eines Helfers erstellen. Dies funktioniert in Controllern, Modellen und überall dort, wo Sie den Helper benötigen.

z.B.

// create Instance   
$serverUrl_helper = new Zend_View_Helper_ServerUrl();

// get the ServerUrl
$serverUrl = $serverUrl_helper->serverUrl();

3
2017-09-18 12:22



Ein anderer Ansatz ist die Verwendung der ContextSwitch oder AjaxContext Aktionshelfer. Dies ermöglicht Ihnen, ein View-Script zu verwenden, von dem Sie dann Ihren View-Helper auf die übliche Weise aufrufen können.


1
2018-02-18 16:36



Verwenden Sie einfach Aktionshelfer, viele der Ansichtshelfer sind auch als Aktionshelfer verfügbar.

Oder direkt mit Zend_Date oder sprintf.


0
2018-03-08 17:26