Nahrávání více souborů pomocí webchemistry/multiplieru
- Dvory59
- Člen | 40
Ahoj.
Řeším nahrávání více souborů ve rámci jednoho formuláře a narazil
jsem na problémy. Chtěl jsem použít klasický MultiUpload, ale tam jsem si
neporadil s tím, že potřebuji zobrazit názvy nahraných souborů a
případně je jednotlivě smazat ještě předtím, než se formulář odešle.
To sem nedokázal vyřešit.
Tak jsem přešel na Webchemistry/Multiplier, kde jsem si říkal, že budu
přidávat po jednom inputu, podle toho kolik uživatel chce nahrát
souborů.
Jenže v multiplieru mám problém, že když nahraji do jednoho inputu
soubor a přidám si další input pomocí btnCreate, hodí mi to error.
Tracy\Debugger::dispatch() called after some output has been sent. Try
Tracy\OutputDebugger to find where output started.
Chápu proč to dělá, ale nevím jak to vyřešit.
Hodím sem kód onoho multiplieru
public function createComponentQuestionForm(){
$multiplier = $form->addMultiplier('multiplier', function (Nette\Forms\Container $container, Nette\Forms\Form $form) {
$container->addUpload('file_exp', 'Příloha')->setAttribute('class','file-expedition');
}, 1);
$multiplier->addCreateButton('Přidat.',1);
}
v latte
<div class="col-sm-3 col-sm-offset-3" n:multiplier="multiplier">
<div class="col-sm-2">
{label file_exp /}
</div>
<div class="col-sm-10 file-border">
{input file_exp}
</div>
<hr>
</div>
<div class="col-sm-8 col-sm-offset-2">
{btnCreate multiplier class=>ajax}
</div>
Dá se tento problém nějak vyřešit?
Nebo poradíte mi prosím čím udělat ono nahrávání souborů? Aby když je
jen načtu, zobrazily se mi všechny jednotlivě v inputu a mohl bych je
případně smazat?
Šlo by to udělat jQuery pluginama, ale nevím jak to zakomponovat do
samotného nette formuláře. Soubory se ani nebudou nikam ukládat, po
odeslání kompletního formuláře se odešel email a soubory budou jako
přílohy.
Mohu poprosit o nasměrování? Jsem na tom zaseklej už dlouho a nevím si rady.
Díky moc
- docky
- Člen | 59
Ahoj, osobně na tohle používám dropzone
Koukni na to, implementace je jednoduchá.
On file input nedokáže držet nahraný file po refreshnutí stránky, takže tak jak to děláš ti to stejně nebude fungovat
- řešení
- nějaky js plugin
- multiplier + vlastní js script který ti bude přidávat a mazat file input
Editoval docky (28. 3. 2019 14:16)