Nejasnosti kolem validačních pravidel

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

Cus, s nette začínám a aktualně se zabívám formulářema konkrétně validčníma pravidlama.
Odkoukal jsem pár příkladu zde na foru, ale nejsem z toho 2× chytrej. Trčí mi v hlavě problem. Potřebuji zkontrolovat zda uploadovaný soubor ja daného formátu. Existuje na to nějaká statická metoda jako Form:Extension nebo jakým způsobem by měla být sestavena callbacková metoda?

A pak ještě začátečnické otázky:

  • addRule mi je jasný – čistě pravidlo
  • addCondition jestli jsem dobře pochopil, to je podmínka zda se maj vykonávat podřazené Pravidla?
  • addConditionOn jsem se nedopídil
  • defaultně mi při neslnění podmínky vyskočí JS okno. když vypnu JS, tak to vypisuje přehledný seznam. Lze to defautlně přepnout na seznam?
  • stáhnul jsem si nějaké příklady a testuji – pokud zadám špatně jméno souboru, nevyskočí JS okno ale input 2× červeně problikne a napíše message. Jakým způsobem si vytvářet tyto message?
  • když zpracovám soubor, jakym způsobem se dostanu k parametrum size apod. když si dám var_dump vypisuje mi to ve formatu size:private, ale ani pres „size“ nebo „tmpName:private“ se tam nemůžu dostat. klidně by se hodil nějakej hotovej skript, z praxe se člověk nejvíc naučí.

Diky za pomoc

romansklenar
Člen | 655
+
0
-

Lopy napsal(a):

Potřebuji zkontrolovat zda uploadovaný soubor ja daného formátu. Existuje na to nějaká statická metoda jako Form:Extension nebo jakým způsobem by měla být sestavena callbacková metoda?

$form->addFile('image', 'Obrázek')
	->addCondition(Form::FILLED)
		->addRule(Form::MIME_TYPE, 'Nahraný soubor musí není obrázek.', 'image/*'); // nebo výčet mime typů oddělených čárkou

Lze to defautlně přepnout na seznam?

// vypnutí javascriptové validace
$renderer = new ConventionalRenderer;
$renderer->setClientScript(); // nebo možná FALSE, nezkoušel jsem
$form->setRenderer($renderer);

když zpracovám soubor, jakym způsobem se dostanu k parametrum size apod.

// po odeslání
$values = $form->getValues();
$uploadedFile = $values['image'];
echo $uploadedFile->getSize();

$uploadedFile je teď instance třídy HttpUploadedFile, pro práci s ní, viz její API.

Ola
Člen | 385
+
0
-

addConditionOn je v podstatě addCondition, ale na prvku z prvního parametru. Viz příklady z distribuce..

_Martin_
Generous Backer | 679
+
0
-

Lopy napsal(a):

  • stáhnul jsem si nějaké příklady a testuji – pokud zadám špatně jméno souboru, nevyskočí JS okno ale input 2× červeně problikne a napíše message. Jakým způsobem si vytvářet tyto message?

Tohle vypadá na vlastnost prohlížeče – pravděpodobně kontroluje, zda zadaný soubor existuje, a pokud ne, upozorní tě na to, protože nemá, co by odeslal. Tuším, že Opera takto upozorňuje (jak jsou na tom ostatní prohlížeče mi není známo).

Lopy
Člen | 5
+
0
-

jo tak. operu mam, takze je to pravdepodobne. ale je to hodne vychytany