Problém s „Maximum call stack size exceeded“ v netteForms.js z Nette 3

JL
Člen | 24
+
0
-

Ahoj,

mám formulář kde potřebuji pravidlo, že pokud je vyplněno A, musí být vyplněno B a naopak (viz příklad níže).

S javascriptem netteForms.js z Nette 2.4 vše funguje, ale po upgrade na Nette 3 a výměně netteForms.js se mi ten javascript cyklí:

Uncaught RangeError: Maximum call stack size exceeded
    at String.match (<anonymous>)
    at Object.Nette.getValue (netteForms.js:89)
    at Object.Nette.getEffectiveValue (netteForms.js:116)
    at Object.Nette.validateRule (netteForms.js:305)
    at Object.Nette.validateControl (netteForms.js:156)
    at Object.Nette.getEffectiveValue (netteForms.js:124)
    at Object.Nette.validateRule (netteForms.js:305)
    at Object.Nette.validateControl (netteForms.js:156)
    at Object.Nette.getEffectiveValue (netteForms.js:124)
    at Object.Nette.validateRule (netteForms.js:305)

Příklad formuláře:

public function createComponentForm(): Form
{
    $form = $this->formFactory->create();

    $nameInput = $form->addText('name', 'Jméno')
        ->setNullable(true);

    $surnameInput = $form->addText('surname', 'Příjmení')
        ->setNullable(true);

    $surnameInput->addConditionOn($nameInput, Form::FILLED)
        ->addRule(Form::REQUIRED, 'Zadejte prosím příjmení');

    $nameInput->addConditionOn($surnameInput, Form::FILLED)
        ->addRule(Form::REQUIRED, 'Zadejte prosím jméno');

    $form->addSubmit('save', 'Uložit');

    $form->onSubmit[] = function (Form $form): void {
        $this->processForm($form);
    };

    return $form;
}

Jak z toho ven? Mám ta pravidla špatně, nebo je to issue javascriptu k nette/forms?

Edit: Asi je to toto issue (https://github.com/…s/issues/161), nicméně mně se to projevuje jen s verzí pro Nette 3.

Editoval JL (14. 8. 2019 11:52)

Gavrilo
Člen | 46
+
+1
-

Ahoj, stále vieš použiť Form Validation :) https://doc.nette.org/…s/validation

JL
Člen | 24
+
0
-

Myslíš sekci Validace celého formuláře ?

To mi bohužel nepomůže – PHP validaci toho aby mi neprošla nevalidní data mám zajištěnou v modelu, o to nejde. Na formulář mám napojenou contributte live form validaci, která je založená na netteForms.js a fungovala moc hezky. Jenže teď už ne, protože se v nette forms vrátilo to issue #161.

JL
Člen | 24
+
0
-

Vyřešil @DavidGrudl v https://github.com/…a45f8f004520 Díky!