Form::IMAGE nefunguje s ajaxem

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
esorimer
Člen | 114
+
0
-

Ahoj,
pokud pouzivam pro odeslani Ajax, tak můžu odeslat jakýkoliv soubor a spustí se mi formSubmitted() s tím, že ‚image‘ obsahuje objekt Nette\Http\FileUpload s ‚error‘ = 4.

Pokud neposilam data pres Ajax, vrati mi ne-obrazek chybu, jak má, a obrázek objekt Nette\Http\FileUpload s ‚error‘ = 0 (čili bez ajaxu se to chová vždy jak má).

<?php
function createComponentMujForm() {
	$form = new Form();
	$form->addUpload('image','Hlavní obrázek:')->addCondition(Form::FILLED)->addRule(Form::IMAGE);
	$form->addSubmit('Odeslat');
	$form->onSuccess[] = callback($this, 'formSubmitted');
	// pokud toto odstranim, chova se to jak ma
	$form->getElementPrototype()->addAttributes(array('class' => 'ajax'));
}
?>
	{snippet mujForm}
		{control mujForm}
	{/snippet}

Problém je tedy asi v Ajaxu, Ajax neumí poslat obrázek? Dá se s tím něco dělat?

Marek Šneberger
Člen | 130
+
0
-

„Klasickým“ ajaxem se soubory nedají / nedoporučují nahrávat. Nicméně existují řešení, jako například js knihovna Plupload – tu jsem osobně integroval do Nette, a fungovalo to v pohodě :)