Validacia – formular nezavola svoju callback metodu on onClick po invalidovani

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

Caute viete mi poradit? Mam formulat v nom mam:

$form->addSelect('parent', 'Rodič')
        ->addRule(Form::FILLED, 'Pole "%label" musí byť zvolené!')
        ->setPrompt('- Zvoliť -');

potom mam ajaxovi handle v ktorom nastavim na tento select setDisabled() a invalidujem tento select. Takze by sa nemal validovat, ani mi nenaskoci hlaska ktoru mam v addRule().
handle

public function handleChangeGrupTypeId() {
          $form = $this->getComponent("form");
          $form['parent']->setDisabled();
      }

      if ($this->presenter->isAjax()) {
          $this->invalidateControl('parent');
      } else {
          $this->presenter->redirect('this');
      }
  }

ale problem je v tom ze sa mi nezavola callback metoda na onClick ktoru mam naviazanu na tento formular. Nevypise mi ani ziadnu hlasku cez js validaciu ani v sablone {control $form errors}. neviem ani kde to zastane. Ale ked urobim hned na zaciatku ze nastavim tomu prvku setDisabled, tak to prejde, lenze ja mam na to ten handle ktory ked zavolam mi ten select vypne, inak ho tam chcem mat.
formular:

// toto prejde
        $form->addSelect('parent', 'Rodič')
                ->addRule(Form::FILLED, 'Pole "%label" musí byť zvolené!')
                ->setDisabled()
                ->setPrompt('- Zvoliť -');

Takze vysledok je ten isty, bud nastavim setDisabled formularovemu prvku manualne hned na zaciatku (takto to nechcem) alebo pomocou handle a invalidujem ten prvok. Problem nastane v tedy ked prvku nastavim setDisabled cez handle ajaxovo, vtedy sa mi nezavola callback metoda na onClick. Niekde to ostane stat, lebo mi nevrati ani js error ani error v sablone.

Neviete mi poradit co mam zle?

duskohu
Člen | 778
+
0
-

Tak uz som prisiel v com je problem. Ked invalidnem selectBox vlozim do neho nove data dam odoslat ale ked si potom dam vypisat data v metode kde ich spracujem tak ma ten selectBox hodnotu NULL, cise select box v invalidovanom snippete neposle nastavene udaje. Ale preco?

Editoval duskohu (20. 12. 2012 13:58)

hAssassin
Člen | 293
+
0
-

Ahoj, problem bude nejspis v tom, ze se formular sestavuje po odeslani znovu a probiha validace na serveru. Cili je vicemene zakazany menit data formulare pres JS. Idealni pro tvuj pripad by asi bylo pouzit addon

duskohu
Člen | 778
+
0
-

ahoj DependentSelectBox som nepouzil lebo mi nevyhovuje: https://forum.nette.org/…-v-statickom, a robim to takto https://forum.nette.org/…jax-s-jquery?p=6, podla mna je to dost ciste, len mam nieco zle, a ani za svet neviem prist na to co to je :-(

duskohu
Člen | 778
+
0
-

Kto nepozorne cita ten sa natrapi: https://blog.nette.org/…-and-pure-js

$values = $form->getHttpData(); // getValues() is not enough for $form["dynamic"]
unset($values["send"]); // we don't need this

Editoval duskohu (20. 12. 2012 15:30)