násobná ověřovací podmínka u formuláře

- vlkodlak
- Člen | 175
Zdravím
u formuláře mám potřebu nastavit dvě podmínky pro ověřeni zadané hodnoty … nedaří se vymyslet správný zápis podmínky
$form = new \Nette\Application\UI\Form;
$form->addtext('employee');
$form->addtext('week');
$form->addtext('day1')
->addConditionon($form::FLOAT)
->addRule($form::RANGE, [1, 25]);
$form->addtext('day1desc');
->addConditionon($form['day1'], $form::FILLED, true)
->setRequired()
$form->addSubmit('send', 'Show Timesheet');
$form->onSuccess[] = [$this, 'formSuccessTimesheetModal'];
$form->renderer;
return $form;
konkrétně u pole DAY1 potřebují nastavit, že je to číslo a je
v rozmezí 1–25
a pokud vyplním pole DAY1 vyžádat doplnění hodnoty u DAY1DESC
Editoval vlkodlak (26. 3. 2021 18:00)

- Šaman
- Člen | 2668
$day1Input = $form->addtext('day1');
$day1Input->addRule(); // jedno pravidlo
$day1Input->addRule(); // jiné pravidlo
Edit: I když ty přece nepotřebuješ obě podmínky navěsit na tenhle input. Popsal jsi dvě podmínky na dva různé inputy, v čem je problém? (Kromě chybějícího středníku, což je předpokládám jen věc vykopírování kódu do fóra.)
Dodatek: A u toho prvniho inputu má být addCondition,
nikoliv addConditionOn.
Editoval Šaman (26. 3. 2021 19:41)

- vlkodlak
- Člen | 175
Šaman napsal(a):
$day1Input = $form->addtext('day1'); $day1Input->addRule(); // jedno pravidlo $day1Input->addRule(); // jiné pravidloEdit: I když ty přece nepotřebuješ obě podmínky navěsit na tenhle input. Popsal jsi dvě podmínky na dva různé inputy, v čem je problém? (Kromě chybějícího středníku, což je předpokládám jen věc vykopírování kódu do fóra.)
Dodatek: A u toho prvniho inputu má být
addCondition, nikolivaddConditionOn.
promiň, trochu nechápu / nemam zkušenost, jak se pak proměnou $day1Input zapojím do formuláře, aby obě přidaná pravidla obsloužil formulář?
add edit: jde mi o to, že bych rád dosáhl stavu, abych ověřil vloženi čísla a v rozsahu mezi 1–24 u pole day1 a separátně při správném vyplnění day1 vyžádal vyplnění pole day1desc

- Šaman
- Člen | 2668
- Nijak. Na prvním řádku mého kódu si pojmenuješ ten input (který se
zároveň vytvořil). Na dalších řádcích na něj navěšuješ pravidla.
Prostě metoda
addXxxvrací přímo novou a připojenou instanci inputu, jinak by nebylo možné na to dál navěšovat addRule apod. Tady se to jen neudělá na jediném řádku, ale na více. - Od oka stejně, jak to máš. To druhé pravidlo se vztahuje na
day1desca tak je navěšené na něj. Ale chybně máš to první. Tam má býtaddConditiona vlastně je myslím úplně zbytečný. Stačí to range, ne? (addConditionse vztahuje k tomuto prvku.addConditionOnse vztahuje k jinému prvku, který musí být v parametru uveden. Tak, jak to máš uday1desc)

- Polki
- Člen | 553
$form->addText('day1')
->addRule($form::FLOAT, 'Zadaná hodnota musí být číslo')
->addRule($form::RANGE, 'Zadaná hodnota musí být v rozmezí od %d do %d', [1, 25]);
$form->addText('day1desc')
->addConditionOn($form['day1'], $form::FILLED)
->setRequired('Povinné pole');
CopyPastni