RadioList – pristup k labelom jednotlivych poloziek

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

Zdravim, ked dam vykreslit RadioList, dostanem standarnde nieco taketo:

<input type="radio" name="itemNumber" id="frmSomeForm-itemNumber-0" value="1" />
<label for="frmSomeForm-itemNumber-0">First item</label><br />

<input type="radio" name="itemNumber" id="frmSomeForm-itemNumber-1" value="2" />
<label for="frmSomeForm-itemNumber-1">Second item</label><br />

Ja by som potreboval ziskat pristup k labelom, ktore prisluchaju jednotlivym polozkam tak, aby som im mohol nastavit atributy (napr. class). Cize nieco taketo:

<input type="radio" name="itemNumber" id="frmSomeForm-itemNumber-0" value="1" />
<label for="frmSomeForm-itemNumber-0" class="radio-item">First item</label><br />

<input type="radio" name="itemNumber" id="frmSomeForm-itemNumber-1" value="2" />
<label for="frmSomeForm-itemNumber-1" class="radio-item">Second item</label><br />

Vdaka za rady.

jtousek
Člen | 951
+
0
-
$form->getLabelPrototype()->class = 'radio-item';

Mimochodem můžeš taky použít CSS selektor input[type=radio] + label.

srobowak
Člen | 27
+
0
-

takto sa dostanem len k labelu, ktory popisuje radiolist a nie k labelu jednotlivych poloziek… ale nakoniec som to vyriesil tak, ze som dal cely radiolist do divu s nastavenou triedou, a vsetky labele vnorene v elemente danej triedy som nastyloval odlisne pomocou css

Matúš Matula
Člen | 257
+
0
-

Je toto uz nejako vyriesene v aktualnej verzii alebo treba pouzit workaround ako pise @srobowak ?

Edit: ciastocne to riesi manual render https://forum.nette.org/…checkboxlist

Editoval Matúš Matula (18. 1. 2013 12:00)

Oli
Člen | 1215
+
0
-

Jde to už nějak ve verzi 2.1.x?
Mám teď něco jako:

$gender = $form->addRadioList('gender', 'Pohlaví', ['F' => 'Žena',  'M' => 'Muž',  'N' => 'Nechci uvést']);
$gender->getSeparatorPrototype()->setName(null);
$gender->getLabelPrototype()->class[] = 'radiolabel';

Což je skoro to co potřebuju, teď bych jen potřeboval aby se to negenerovalo pro ten hlavní label. Výsledek by měl vypadat zhruba takhle:

<label>Pohlaví</label>
<label class="radiolabel"><input type="radio" name="gender" value="f">Žena</label>
<label class="radiolabel"><input type="radio" name="gender" value="m">Muž</label>
<label class="radiolabel"><input type="radio" name="gender" value="n" checked="checked">Nechci uvést</label>

Mě to ale vygeneruje i v tom label pro Pohlaví

<label class="radiolabel">Pohlaví</label>
Oli
Člen | 1215
+
+4
-

Tak ve verzi 2.3 to jde takhle. Možná to jde i ve dřívějších verzích, už si ani nepamatuju, kdy se přidali n:name makra, je to davno :-)

<label>Pohlaví</label>
{foreach $form[gender]->items as $key => $label}
	<input n:name="gender:$key"><label n:name="gender:$key" class="radiolabel">{$label}</label>
{/foreach}