Action ohne View in Enlight

Ich versuche gerade einen Ajax-Request im Backend umzusetzen, wobei ich zum wiederholten Male auf folgende Frage stieß und das doch mal posten wollte: Wie lässt sich das rendern von Views verhindern? In CakePHP kann ich das im Controller mit $this-\>autoRender = false; recht einfach erreichen, in ZF mit $this-\>getHelper('viewRenderer')-\>setNoRender();. Ich hatte mir kurz entsprechende Klassen Enlight_View_View, Enlight_View_ViewCache und Enlight_View_ViewDefault angesehen - bin aber bislang noch nicht dahintergekommen wie das vonstatten gehen könnte. Im konkreten Fall kann ich mich mit ExtJS durchwursteln, ich benötige nur eine JSON-Rückgabe von meinem Controller, der den Ajax-Request verarbeitet. Das bekomme ich so hin, allerdings erschließt sich mir noch nicht ganz, warum :wink: Und zwar der folgende Aufruf: $this-\>View()-\>setTemplate(); Bedeutet das, ich setze den Template-Parameter auf null und erreiche damit, dass das Template nicht gerendert wird? Die Sache mit dem Prozess des Auto-Renderings ist mir jedenfalls noch nicht ganz klar. So generell, würde ich aber schon ganz gern wissen, ob ich eine Methode ohne View aufrufen kann. PS: Mir fiel noch ein, dass ja auch noch zu beachten ist, wo ich im Dispatch-Prozess einsetze, in den meisten meiner Anwendungsfälle hänge ich mich ja mit Plugins dort ein.

Moin, [quote] Das bekomme ich so hin, allerdings erschließt sich mir noch nicht ganz, warum :wink: Und zwar der folgende Aufruf: $this->View()->setTemplate(); Bedeutet das, ich setze den Template-Parameter auf null und erreiche damit, dass das Template nicht gerendert wird? Die Sache mit dem Prozess des Auto-Renderings ist mir jedenfalls noch nicht ganz klar. [/quote] Das hast du genau richtig erkannt :wink: Normalerweise wird auf Basis des Namens des Controllers und der Action ja automatisch eine Route zum Template ermittelt. Also wenn der Controller Index ist und die Action getBannerAction würde das System die Datei index/getBanner.tpl suchen - mit setTemplate(null) deaktiviert du den Standard-View, so dass du dann das Ergebnis z.B. per JSON an den Browser schicken kannst. Mit loadTemplate kannst du übrigens abweichende Template-Dateien definieren, die nicht den o.g. Namenskonventionen entsprechen müssen!

Besten Dank! So dachte ich mir das fast. Diese loadTemplate Methode hatte ich selbst schon bei Plugins eingesetzt - das wird ja von Euch gut in den Tutorials dokumentiert. Ich arbeite mich mal weiter vor und recherchiere demnächst wie das Konzept von Helpern in Shopware / Enlight umgesetzt wurde.