Ublaboo DataGrid s (ajaxovým) uploadem souboru
- Petr Daňa
- Člen | 109
Ahoj,
předem podotýkám, že už několik let weby nedělám a s Nette pracuju jen
na jednom menším projektu, který udržuju, takže mi už utekla spousta
věcí.
Mám takový speciální požadavek na funkci, a sice v DataGridu (aktuálně
Ublaboo) mít pro každý řádek (položku) tlačítko pro upload souboru.
Začal jsem tedy tím, že jsem do DataGridu chtěl přidat přes
addActionCallback() a jeho setRenderer() vygenerování formuláře pomocí
Multiplieru. Ten Multiplier jsem udělal jen jednoduchý formulář
s uplodem:
protected function createComponentFileForm() {
return new Multiplier(function ($itemId) {
$form = new Nette\Application\UI\Form;
$form->addUpload('file', 'Soubor');
$form->addHidden('itemId', $flatId);
$form->addSubmit('send', 'Odeslat');
return $form;
});
}
No a samozřejmě uvnitř toho setRender() to jen jako návratová hodnota nestačí, protože ta chce už vygenerovaný řetězec.
$grid->addActionCallback('file', 'Odeslat soubor')
->setRenderer(function ($item) {
return $this->createComponentFileForm($item->id);
});
Takže první prosba o pomoc – jak se dá nechat Multiplier vyrenderovat v kódu?
Další dotaz je, zda je vůbec možnost na začátku zmíněnou funkcionalitu takhle udělat? Počítal jsem, že (netuším zatím teda vůbec jak a doufám, že na to najdu nějakou hotovou komponentu) ty vyrenderované formuláře se něčím obalí, co ho skryje a udělá z něj ajaxový upload. Ale nevím no, jsem poněkud bezradný a ani ty desítky otevřených panelů v browseru z hledání řešení mi zatím moc nepomohly :)
Díky za případnou pomoc či nasměrování.