Odeslání snippetu v komponentě

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

Ahoj, prosím o radu neboť jsem v koncích.
Vytvářím si komponentu pro hromadný upload souborů. Používám pro to Uploadify.
Vím, že je ke stažení komponenta v doplňcích, ale ta mi nevyhovuje.
Mám vyřešeno odeslání a nahrání souborů na server, ale po uploadu bych potřeboval zobrazit seznam nahraných souborů.
Uploadify se konfiguruje takto

$(function() {
                $('#file_upload').uploadify({
                        'formData'     : {
                                'timestamp' : {$timestamp},
                                'tempId' : {$tempId}
                        },
                        'swf'      : {$basePath.'/js/uploadify/uploadify.swf'},
                        'uploader' : {$url},
                        'onUploadSuccess' : function(file, data, response) {
				.....
                        }
                });
        });

Já bych potřeboval aby se mi při zavolání „onUploadSuccess“ vrátil snippet s výpisem souborů v „data“. V proměnné data se vrací to co mi vrátí handle metoda viz. níže.

Komponenta zobrazuje tlačítko pro upload a výpis souborů

<h1>Uploadify</h1>
<form>
        <div id="queue"></div>
        <input id="file_upload" name="file_upload" type="file" multiple="true">
</form>

{snippet files}
<div n:foreach="$soubory as $soubor">
    <p>{$soubor->sbNazev}</p>
</div>
{/snippet}

Presenter komponenty mám takto

public function render(){
    $this->template->setFile(__DIR__ . '/uploadify.latte');
    $this->template->url = $this->link('uploadFile');
    $this->template->tempId = $this->tempId;
    $this->template->soubory = $this->getFiles();
    $this->template->render();
}

public function handleUploadFile(){
        $file = $this->httpRequest->getFile('Filedata');
        $file->move($fileDir."/".$file->getSanitizedName());

        $this->redrawControl('files');
        $this->presenter->sendJson($data);

    }
}

Otázka tedy zní jak v „$this->presenter->sendJson($data);“ poslat aktualizovaný snippet „files“

Moc díky za odpověď
Lukáš

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Presenter má takovou defaultní JsonResponse, která se jmenuje payload (je to instance stdClass přístupná v $presenter->payload). Do ní ukládá vyrenderované snippety. Pokud tedy chceš odeslat vlastní data i snippety, předej svoje data do payloadu (assignment stejně jako do šablony) a odešli jej pomocí

$this->presenter->payload->mydata = $data;
$this->presenter->sendPayload();
konva
Člen | 88
+
0
-

No to jsem zkoušel, ale nic mi to nevrátí. Resp. když tam dám to

$this->presenter->payload->mydata = $data;

tak to vrátí

{"mydata":["ahoj"]}

jinak nic…

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Hm, a když zrušíš to sendPayload()?

konva
Člen | 88
+
0
-

Tak se pošle celá stránka v HTML

konva
Člen | 88
+
0
-

Neporadítě někdo? Stále s tím bojuju. Obecně potřebuju odeslat obsah webu jako JSON a nejlépe jen snippety, které jsem dal redrawControl

konva
Člen | 88
+
0
-

Problém vyřešen zde