Formulář vrací pekelné nedobroty

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

Ahoj,

nechce mi dupat zpracování formuláře. Script vypadá v této chvíli takto:



            $form = new Form;
            $form->addSelect('gallery', 'Přiřadit galerii: ', $this->upload->getGalleries());

            $form->addUpload('img','Snímky: ', true)
                    ->addCondition($form::FILLED)
                        ->addRule(Form::IMAGE, 'Obrázek může být pouze ve formátu jpg, png nebo gif')
                            ->addRule(Form::MAX_FILE_SIZE,'Velikost snímku nesmí překročit 2 mb', 2*1048576);
            $form->addSubmit('upload', 'Nahrát');

            $this->template->form = $form;

            if($form->isSuccess())
            {
                $this->flashMessage('Upload proběhl úspěšně!', 'info');
                var_dump($form->getValues());
            }else echo "ee";

Do výběru nezadám žádné soubory a stejně po kliknutí na submit Nahrát se to provede jako úspěch a vrátí mi to obsah z GetValues .. Why?

Díky

qteck
Člen | 164
+
0
-

tak jsem to tam hodil jako rule:

->addRule($form::FILLED, ‚Je potřeba naplnit pole obsahem.‘)

ale táži se, co když mi do toho zpracování pošle někdo data z vlastního formuláře? Kde nebude vyskakovat alert. Nebo je to pak ošetřené i co se týče phpka? a stačí pokračovat pouze v v podmínce kde ověřuji isSuccess?

Normálně bych to sprvail tak, že bych ověřil kliknutí na submit a poté, zda pole s uploadem obsahuje nějaká data. Tady to teď dělat nemusím?

Thx

Michal Vyšinský
Člen | 608
+
0
-

Ahoj,
addCondition způsobí to, že se další pravidla aplikují jen pokud je podmínka splněna – tedy pokud je vyplněno pole pro upload, tak se kontroluje typ a maximální velikost. Místo addCondition použij setRequired/addRule($form::FILLED)