Validace podle stisknutého tlačítka
- Jiří Nápravník
- Člen | 710
Mám jeden velky formular v nem je hlavni tlacitko a pak vedlejsi tlacitko, kterým se dá přihlásit. Potřebuji nějak zajistit, aby když se přihlašuji, tak byly vyplněny právě mail a heslo. Pokud stisknu hlavni tlacitko tak me tenhle prihlasovaci podformular vubec nezajimá. Jde to nějak jednoduše udělat? Nebo musím využít onValidate?
- David Matějka
- Moderator | 6445
dve moznost:
$form->addText('foo')->addConditionOn($form['button'], $form::SUBMITTED)->addRule($form::FILLED);
nebo
$form->addSubmit('button')->setValidationScope(array($form['foo'], $form['bar']));
$form->addSubmit('fooButton')->setValidationScope(FALSE);
do validation scope muzes dat bud array controlu nebo containeru, ktere maji validovat, nebo FALSE, coz nebude validovat nic (ale onValidate se myslim zavola vzdy..)
- japlavaren
- Člen | 404
ja by som na to druhe tlacitko ktore nic nerobi pouzil setValidationScope(FALSE)
- Jiří Nápravník
- Člen | 710
@matej21 díky! použil jsem validationScope, ja měl za to, že se používá jen pro zakázání validace…
- libik
- Člen | 96
Stale mam https://forum.nette.org/…te-callbacku
bez odpovedi, tak se pridam sem, protoze ten zaklad je podobny – akorat chci
provadet vlastni validaci pres $form->onValidate[].
Jak tam zajistim, aby se validace provadela jen u ‚submit‘ tlacitka?
getValidationScope() mi prestal na 2.2.3 fungovat.
Mam po odeslani formulare:
DEBUGGER::firelog($form->submitted); //true
DEBUGGER::firelog($form['cancel']->isSubmittedBy()); //false
DEBUGGER::firelog($form['submit']->isSubmittedBy()); //false
DEBUGGER::firelog($form['submit']->getValidationScope()); //null
DEBUGGER::firelog($form['cancel']->getValidationScope()); //[ ]
Ve 2.1.1 mi fungovalo:
if ($form->submitted->getValidationScope() === NULL) {}
Ted koncim na Call to a member function getValidationScope() on a non-object in … protoze $form->submitted je (boolean) true;
EDIT: zajimave, ze mam tuto potiz jen na dev na localhostu, na serveru to
funguje a $form->submitted je (object)
Nette\Forms\Controls\SubmitButton :o
Ale nemam ted aktualizovane vsechny skripty v app (config i bootstrap jsou
shodne, vcetne knihoven) z duvodu rozpracovanych nekterych casti. Takze bota
asi bude nekde jinde.
Editoval libik (18. 9. 2014 10:39)