Odeslání snippetu v komponentě
- konva
- Člen | 88
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
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();