setValidationScope([]) na submitu zabrání odeslání $values do onSuccess metody
- Michal Kumžák
- Člen | 106
Zdravím
Udělal sem si update balíčků na poslední verzi (Nette/forms v3.1.4) a při konstrukci
$form->addSubmit('filtrovat', 'Filtrovat')->setValidationScope([]);
se mi přestali odesílat data do metody definované v onSuccess. Přicházel mi tam jen prázdný object \Nette\Utils\ArrayHash. Po smazání setValidationScope, se data opět začali odesílat. Je to záměr nebo je to chyba?
Michal
- Michal Kumžák
- Člen | 106
David Grudl napsal(a):
Super, to mi vysvětluje ten setValidationScope. Jenže když ho tam nedám, tak se mi na onSuccess nic nezavolá, ikdyž ve formuláři nic nekontroluji a bdump($form->getErrors()) hlásí, že je prázdný.
- Michal Kumžák
- Člen | 106
David Grudl napsal(a):
To je divný, můžeš vytvořit co nejjednodušší demo problému?
Tak problém odhalen. Musel jsem upravit definovaní některých polí pro addSelect.
Místo této definice
['', 1, 2, 3, 4]
jsem musel uvést tuto
[''=>'', 1=>1, 2=>2, 3=>3, 4=>4]
a pak už to začlo procházet.
Editoval Michal Kumžák (31. 8. 2021 19:00)
- David Grudl
- Nette Core | 8239
Chování, které jsi popsal, by nemělo nastat ani s první definicí. Jak vypadá kód toho selectu?
- Michal Kumžák
- Člen | 106
David Grudl napsal(a):
Chování, které jsi popsal, by nemělo nastat ani s první definicí. Jak vypadá kód toho selectu?
Původní, kdy to nehlásilo chybu ale ani nevolalo onSuccess
$form->addSelect('pocet_osob', 'Počet osob na pokoji:', ['', 1, 2, 3, 4])
->setHtmlAttribute('title', 'Vyberte počet osob');
Po úpravě, kdy to pak začalo volat onSuccess
$form->addSelect('pocet_osob', 'Počet osob na pokoji:', [''=>'', 1=>1, 2=>2, 3=>3, 4=>4])
->setHtmlAttribute('title', 'Vyberte počet osob');
Edit: Hmmm, ale když to zkusím nasimulovat jen s tímto selectem, tak to jde. Jdu zkusit pátrat dál.
Edit2: Takže původce problému odhalen, je to bootstrap4. Když vyzkoušíš odeslat ten form bez prvedení výběru, tak to neprojde, protože to odešle prázdnou hodnotu, ale automaticky generovaný klíč toho prvního pole je 0.
Editoval Michal Kumžák (2. 9. 2021 13:25)