Manuální vykreslení a toggle

divispet
Člen | 29
+
0
-

Ahoj,

potreboval bych poradit s maualne vykreslovanym formularem a toggle funkci. Stejny form je na strance nekolikrat takze ho tvorim pres multiplier. Zkousel jsem to uz nekolika cestama ale zatim bez uspechu. Toggle proste „nereaguje“.

addAttribute do Radiolistu ktery chci togglovat problem neresi

/* pokud je hodnota 3, skryj radio CONTROL_NAME */
$form->addRadioList('types', null, $types)
	->addCondition($form::NUMERIC, 3)
	->toggle('CONTROL_NAME'.$id);

$form->addRadioList('CONTROL_NAME', null, array(...));
<div class="col-md-4 col-12 my-auto">
<div id="CONTROL_NAME{$id}" class="btn-group btn-group-toggle mb-2" data-toggle="buttons">
{foreach $form["CONTROL_NAME"]->items as $key => $label}
	<label n:name="CONTROL_NAME:$key" n:class="btn, btn-outline-dark, border-none, rounded">
	...
	<input n:name="CONTROL_NAME:$key">
	</label>
{/foreach}
</div>
</div>

Editoval divispet (25. 2. 2020 8:21)

MajklNajt
Člen | 471
+
+1
-

V podmienke musíš použiť $form->EQUAL namiesto NUMERIC

divispet
Člen | 29
+
0
-

MajklNajt napsal(a):

V podmienke musíš použiť $form->EQUAL namiesto NUMERIC

Bohužel taky nefunguje

divispet
Člen | 29
+
0
-

Udělal jsem malý test a funguje jak má. Takže s největší pravděpodobností bude problém souviset s manuálním vykreslováním těch radiolistů…

do formuláře jsem přidal

$form->addRadioList('t1', null, array(1=>1, 2=>2))
	->addCondition($form::EQUAL, 2)
	->toggle('t2');
$form->addRadioList('t2', null, array(1=>1, 2=>2));

a do latte

{input t1}
<div id="t2">
	{input t2}
</div>

UPDATE:
Přijde mi divné že když vypíšu input nemanuálně je jeho HTML výstup na prvím řádku a toggle funguje.
Pokud vypíšu input manuálně je výstup na druhém řádku a toggle NEfunguje

Nevím jestli to může mít vliv, ale při nemanualním renderu je DATA-NETTE-RULES jen u prvního input elementu zatímco u manuálního je DATA-NETTE-RULES u všech input elemntů

<label>
<input type="radio" name="t1" value="2" data-nette-rules="[{"op":":equal","rules":[],"control":"t1","toggle":{"rounds16":false},"arg":2}]">
VALUE 2
</label>


<label class="btn btn-outline-dark border-none rounded" for="frm-...-2">
<img src="/images/icons/VALUE2.png" class="img-fluid img-thumbnail rounded-circle">
<input type="radio" name="resulttypeId" id="frm-...-2"
data-nette-rules="[{"op":":equal","rules":[],"control":"resulttypeId","toggle":{"rounds16":true},"arg":2}]"
value="2">
</label>

Editoval divispet (25. 2. 2020 14:19)

divispet
Člen | 29
+
+2
-

Tak po dluhém bádání jsem přišel na to že problém způsobuje data-toggle=„buttons“ od bootstrapu. Pokud tento data- attribute odeberu, začne toggle fungovat. Takže asi bude potřeba napsat si toggle na classy vlastním javascriptem