RadioList Form::RANGE validateRange

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Ascaria
Člen | 187
+
0
-

Zdravím,

Nette Framework (version 2.0-dev released on 2011–10–11, https://nette.org)

Když se pokouším u RadioListu přidat ->addCondition(Form::RANGE, Array(1, null)) (tzn. všechny radiobuttony kromě prvního), končí mi to na chybě, že není definovaná metoda RadioList::validateRange. Je to takto schválně? Jako hotfix jsem tuto metodu přesunul z textbase do basecontrol a její první argument změnil z TextBase na IControl. Zdá se že to funguje, ale nezkoušel jsem to s ostatníma controlama, ke kterým to díky této změně přibylo.

Ascaria

Jan Endel
Člen | 1016
+
0
-

nebylo by čistější:

->addConditionOn($form['radioList], Form::EQUAL, 1)

?

kravčo
Člen | 721
+
0
-

Ak ti vadí iba jedna z hodnôt, potom je najjednoduchšie použiť negované Form::EQUAL:

$form->addRadio('radio1', 'Radio1:')
    ->addCondition(~Form::EQUAL, 1) // vlnovka pravidlo neguje
    ->...

Viac v dokumentácii k validácii.

Ascaria
Člen | 187
+
0
-

Potřebuji výčet hodnot bohužel. Když mám radiolist o 5ti hodnotách, tak pro 2* hotel může být povinný výběr 4 hodnot, a když mám 5* hotel tak to pak může být omezené jen na jednu či dvě „luxusnější“ volby. Přijde mi divné, že radiolist má výčet hodnot, ale nelze jejich validaci vymezovat výčtem.

David Grudl
Nette Core | 8228
+
0
-

Výčet může být použit i jako parametr Form::EQUAL. Místo hodnoty uveď pole hodnot.

Ascaria
Člen | 187
+
0
-

Form::EQUAL ale nemůže mít rozsah např. od 5 do nekonečna. Dělat pole s výčtem hodnot může přidat do kódu cyklus navíc (např. pokud okamžitě znám jen jedno číslo a to minimální hodnotu), který bude ten výčet speciálně stavět, což nemusí být vždy praktické. Proto si myslím, že range by mohlo mít kromě checkboxu všechno (nakonec i checkbox může mít pravidlo range Array(1, null)).

Editoval Ascaria (21. 3. 2012 14:56)

David Grudl
Nette Core | 8228
+
0
-

RANGE pro ostatní prvky jsem dal do dev verze.