Ublaboo DataGrid s (ajaxovým) uploadem souboru

Petr Daňa
Člen | 109
+
0
-

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í.