Upload obrázku v ručně vykresleném formuláři

Johnczek
Člen | 37
+
0
-

Zdravím, mám ručně vykreslený formulář kde mám mimo jiného input type file. Mohl by mi někdo poradit jak v presenteru (v metodě onsuccess) vytáhnu daný soubor,získám příponu, změním mu jméno a uložím ho na serveru do specifické složky? Pomocí

$data = $form->getHttpData();

mi to nefunguje, vrací mi to pouze string (název) daného obrázku.

Děkuji za odpověď.

JZechy
Člen | 161
+
0
-

@Johnczek při zpracování přes onsuccess máš ve $form->getValues() objekt Nette\Http\FileUpload na indexu příslušící inputu.

Editoval JZechy (18. 9. 2017 16:38)

Johnczek
Člen | 37
+
0
-

JZechy napsal(a):

@Johnczek při zpracování přes onsuccess máš ve $form->getValues() objekt Nette\Http\FileUpload na indexu příslušící inputu.

Když si to v onsuccess dumpnu tak mi to vyhodí jen array hash. Jak se k tomu obrázku dostanu?

JZechy
Člen | 161
+
0
-

@Johnczek Tak se koukni na ten ArrayHash pořádně, pokud máš input pro file upload pojmenovaný obrazek, budeš mít v ArrayHash atribut obrázek, na kterém bude FileUpload objekt.

Johnczek
Člen | 37
+
0
-

JZechy napsal(a):

@Johnczek Tak se koukni na ten ArrayHash pořádně, pokud máš input pro file upload pojmenovaný obrazek, budeš mít v ArrayHash atribut obrázek, na kterém bude FileUpload objekt.

http://prntscr.com/gmndae asi tam nic není.
V presenteru to mam takto

public function createComponentEdit() {

    $form = new UI\Form;

    $form->addProtection('Vypršel časový limit, odešlete formulář znovu');

    $form->onSuccess[] = [$this, 'editSucceeded'];

    return $form;
}

public function editSucceeded(UI\Form $form, $values) {
    dump($form->getValues());
}

V šabloně to pak mám vykreslené jako

{form edit}
		blabla

		<input id="icon" name="icon" type="file" class="form-control">

		blabla
{/form}
iguana007
Člen | 970
+
+1
-

@Johnczek musis ten input nadefinovat i v tom formulari createComponentEdit :)
Vice zde: https://doc.nette.org/…rms/controls#…
Nasledne pak upravit i sablonu a do ni vlozit: {input icon} misto te definice <input… nebo to napsat takto:

<input id="icon" n:name="icon" type="file" class="form-control">

Editoval iguana007 (18. 9. 2017 17:22)

Johnczek
Člen | 37
+
0
-

iguana007 napsal(a):

@Johnczek musis ten input nadefinovat i v tom formulari createComponentEdit :)
Vice zde: https://doc.nette.org/…rms/controls#…
Nasledne pak upravit i sablonu a do ni vlozit: {input icon} misto te definice <input… nebo to napsat takto:

<input id="icon" n:name="icon" type="file" class="form-control">

Ahaa, tohle jsem netušil. Děkuju moc.