Ukončení skriptu po provedeni signalu v komponente

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

Ahoj,
nevím jestli nevymýšlím nějakou kravinu ale …
Chci si udělat komponentu pro upload souborů a využít Uploadify.
Komponenta mi zobrazí jednoduché tlačítko na které když kliknu tak se zobrazí okno pro výběr souborů, poté co potvrdím se zavolá skript (který jsem uvedl v konfiguraci uploadify) a ten má za úkol zpracovat a nahrát soubory. Tady je ukázka http://www.uploadify.com/demos/
No a chci aby to zpracování provedl handle v té komponentě, tedy v konfiguraci uvedu

$this->link('uploadFile');

který směřuje na funkci

function handleUploadFile(){
	// nahraji a zpracuji soubor a vratim JSON
}

v komponentě

A konečně otázka. Jak mohu ukončit zpracování skriptu aby se nerenderovala šablona komponenty ani presenteru?
Resp. chci si pouze jako JSON vratit nejaka data, ale nechci aby se zpracovavala cela stranka.
Snad jsem to popsal srozumitelne.
Diky
Lukas

batko
Člen | 219
+
0
-
<?php
//pokud jsi v komponentě
$this->presenter->redirect("this");

//pokud jsi v presenteru
$this->redirect("this");
?>
bazo
Člen | 620
+
0
-

on chce ukoncit, nie presmerovat.

nahrad redirect za terminate()

alebo este lepsie poslie rovno json odpoved

<?php
$response = new JsonResponse($payload);
$this->presenter->sendResponse($response);
?>

alebo cistejsie

<?php
$response->send($httpRequest, $httpResponse);
?>

Editoval bazo (25. 1. 2014 22:17)

konva
Člen | 88
+
0
-

díky. Toto jsem potřeboval

$response = new JsonResponse($payload);
$this->presenter->sendResponse($response);

ale proč je toto

$response->send($httpRequest, $httpResponse);

čistčí řešení?
A čím (vím, že hloupá otázka, ale …) mám naplnit ty proměnné „$httpRequest, $httpResponse“?
díky
Lukáš

Pavel Macháň
Člen | 282
+
0
-

konva napsal(a):

díky. Toto jsem potřeboval

$response = new JsonResponse($payload);
$this->presenter->sendResponse($response);

ale proč je toto

$response->send($httpRequest, $httpResponse);

čistčí řešení?
A čím (vím, že hloupá otázka, ale …) mám naplnit ty proměnné „$httpRequest, $httpResponse“?
díky
Lukáš

Pokud seš v prezenteru tak používej

$this->presenter->sendResponse($response);

nevidím důvod si to ručně skládat.

Patrik Votoček
Člen | 2221
+
0
-

v Nette 2.1 stačí:

$this->presenter->sendJson(array('some' => 'payload data'));
konva
Člen | 88
+
0
-

Ahoj,
díky to sem potřeboval :).
Lukáš