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 | 2667
$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é 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
, 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 | 2667
- 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
addXxx
vrací 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
day1desc
a tak je navěšené na něj. Ale chybně máš to první. Tam má býtaddCondition
a vlastně je myslím úplně zbytečný. Stačí to range, ne? (addCondition
se vztahuje k tomuto prvku.addConditionOn
se 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