AddInteger nepovinny ve formuláři
- jokas
- Člen | 14
Ahojte,
rád by jsem mněl prvek addinteger ve formuláři bez nutnosti ho vyplnit
(takže nepovinný parameter) a zároveň nullable, co je.
V takovém případě musím nastavit default hodnotu na 0.
Je možné to udělat, aby daná pole zůstala prázdna ale byla typu integer a
v případě vyplnění se provede kontrola pravidel?
Z dokumentace:
addInteger(string|int $name, $label=null): TextInput
Přidá políčko pro zadání celočíselného čísla (třída TextInput).
Vrací buď integer, nebo null, pokud uživatel nic nezadá.
$form->addInteger(‚level‘, ‚Úroveň:‘)
->setDefaultValue(0)
->addRule($form::RANGE, ‚Úroveň musí být v rozsahu mezi %d a %d.‘,
[0, 100]);
Předem děkuji za pomoc.
- jokas
- Člen | 14
Ahoj,
no to je v případě zpracování. Ale při vykreslení formuláře nechci
mít default u všech polí 0 a následně užívatel to musí přepisovat na
vlastní hodnoty, nebo pole nechá s 0. Chtěl bych, aby prvky byli prázdne a
buď je vyplní číslem nebo ne (input je prázdný).
Když to nechám podle dokumentace bez setDefultValue, tak se provádí kontrola
na číslo a formulář se neodešle.
Děkuji.
Editoval jokas (7. 11. 2020 16:02)
- David Grudl
- Nette Core | 8227
Co nefunguje na tomto?
$form->addInteger(FormData::COUNT, 'Počet')
->addRule($form::RANGE, 'Úroveň musí být v rozsahu mezi %d a %d.', [0, 100]);
- jokas
- Člen | 14
V případě nevyplnění (nullable) inputu se form neodešle a objeví se
hláška:
Zadejte prosím celé číslo.
Jde to obejít setDefaultValue = 0, ale nelíbí se mi, že po otevření formuláře je v inputech nastavená 0 a užívatel to musí přepisovat.
Od uživatele galab řešení funguje, ale vrací to string, tak je potřeba to ještě přetypovat na integer při zpracování, když pole je vyplněno.
AddInteger má funkci setNullable, ale není možné nechat input prazdny.
Editoval jokas (8. 11. 2020 9:16)
- David Grudl
- Nette Core | 8227
To má fungovat. Jakou máš verzi Nette? Form se neodešle proč, kvůli JS? Máš aktuální netteForms.js?