Nefunkční validace addUpload nefunguje SetRequired

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

Dobrý den,
mám problém s validací povinné položky a to u pole typu File.
Validace setRequired() vůbec neproběhne, formulář se neodešle, jen se přesměruje stránka, bez jakékoli hlášky.
Jedná se pravděpodobně o BUG, existuje nějaké řešení jak tuto validaci zprovoznit, např. pomocí JavaScriptu ?

kod formulare.

protected function createComponentCarouselAddForm()
{
    $form = new Form;
    $form->addText("test","tes")->setRequired('Vyber obrázok');
    $form->addUpload('image', 'Pridať obrázok:')
        ->setRequired('Vyber obrázok')
        ->addRule(FormValidators::SUM,"'Součet není správně!")
        ->addRule(Form::FILLED, 'Vyber obrázok')
        ->addRule(Form::IMAGE, 'Obrázok musí byť JPEG alebo PNG.');
    $form->addSubmit('save', 'Uložiť');

    $form->onSuccess[] = $this->carouselAddFormSucceeded;
    return $form;
}

public function carouselAddFormSucceeded(Form $form)
{
    \Nette\Diagnostics\Debugger::barDump($form->getValues()->image->error,'$form');
    if ($form->getValues()->image->error !== 0) {
        $form->addError('Vyber obrázok.');
        $this->flashMessage('Vyber obrázok.');
        $this->redirect('this');
    }
    $values = $form->getValues();
    \Nette\Diagnostics\Debugger::barDump($values);
    exit;

}

Děkuji za rady.

Editoval Klainer (22. 8. 2014 9:45)

CZechBoY
Člen | 3608
+
0
-

Co znamená, že se form neodešle? Provede se teda POST nebo ne?

Klainer
Člen | 42
+
0
-

Ok, POST se provede, ale neměl by, jelikož není vyplněné povinné pole. JS validace je tedy nefunkční, serverové funguje OK. Otázkou je, kde může být chyba.

CZechBoY
Člen | 3608
+
0
-

Máš přilinkovaný netteForms.js?

Klainer
Člen | 42
+
0
-

Všechno funguje jak má, tzn validace ostatnich elementu funguje bez problemu. jen zlobi upload. Tedy ano je spravne nalinkovan.

radekBrno
Člen | 61
+
0
-

Pravidlo, zda byl obrázek vyplněn se kontroluje až na serveru, takže to nejde přes JS.

Pokud máš pro formulář vlastní šablonu, tak tam pro výpis chyb musíš dodat:

<ul class="errors" n:if="$form->hasErrors()">
  <li n:foreach="$form->errors as $error">{$error}</li>
</ul>
David Grudl
Nette Core | 8235
+
+1
-

Mělo by se to kontrolovat i v prohlížeči, od IE 10.