Jak poslat z presenteru rovnou výstup bez templaty?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
keff
Člen | 12
+
0
-

Ahojte, chci do vyvíjeného webu přidat API, pro propojení se starším informačním systémem. Fungovalo by tak, že IS pošle HTTP postem soubor, já ho na serveru zpracuju, a vrátím odpověď, typicky 0 nebo 1.

Teď to řeším tak, že actionFoo() metoda presenteru nastaví proměnnou FooPresenter->output na výstupní hodnotu, $this->view = ‚echo‘, a pak je pro každou actionFoo() i příslušné renderFoo(), které akorát zkopíruje $this->output do $this->template->output. K tomu pak je ještě prázdná template echo.phtml (jen {!$output}).

Uvedené řešení mi přijde neskutečně zdlouhavé na vypsání 0/1, a když mám v API těch akcí víc, musím ke každé psát render*() metody.
V Nette se dělají věci chytře a bez opakování, takže se chci zeptat jestli můžu dát v FooPresenter:actionFoo() jen echo 1; a pak nějak říct Nette, že tím má skončit – ať nezpracovává templaty a render metody…

Díky :) (PS: tohle psaní příspěvku je tu děsně vychytané, dobrá práce Davide!)

jasir
Člen | 746
+
0
-

Edit: No tak je to trošku nečisté, zapomeňte… :-)

<?php
public function renderXXX() {
	echo "0/1";
	$this->terminate();
}
?>

Editoval jasir (25. 10. 2010 8:30)

keff
Člen | 12
+
0
-

Cool, to je ono! Díky.

Majkl578
Moderator | 1364
+
0
-

Já bych řekl, že použití Response je čistší postup:

$this->sendResponse(new \Nette\Application\RenderResponse('0/1'));
Honza Kuchař
Člen | 1662
+
0
-

Ano, ano. Správně by to mělo být, jak píše Majkl578.