CheckboxList – jak pridat k labelu tridu dle toho, zda je checkbox zaskrtnuty?

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

Delam to takto:

{foreach $form['branches_id']->items as $key => $label}
	<label n:name="branches_id:$key" n:class="$form['branches_id']->getControlPart($key)->getAttribute('checked') ? active"><input n:name="branches_id:$key"> {$label}</label>
{/foreach}

ale hadam ze to jde i jednoduseji (a nejspise i primo v PHP).

Diky za rady.

EDIT:

pardon, takto to delam:

{foreach $form['branches_id']->items as $key => $label}
	<label n:name="branches_id:$key" n:class="$form['branches_id']->getControlPart($key)->checked ? active"><input n:name="branches_id:$key"> {$label}</label>
{/foreach}

Editoval thorewi (4. 5. 2014 0:26)

sKopheK
Člen | 207
+
0
-

K labelu určitého elementu formuláře přistoupíš metodou getLabelPrototype() a když jej pak vypisuješ přes makro {label ...}, vypíše se tam i to, cos mu nastavil za atributy, tj. v tvém případě třeba třída.

$form['name']
	->getLabelPrototype()
		->class('active');
thorewi
Člen | 84
+
0
-

To se ale bavis o labelu celeho CheckboxListu, k labelum jednotlivych checkboxu se pristupuje imho pomoci getLabelPart() ale ten label se tam predava pres clone takze jakekoliv zmeny v nem se nikde neprojevi.

sKopheK
Člen | 207
+
0
-

Aha, CheckboxList jsem ještě nepoužil, ale problém, co nastiňuješ, mi napovídá, ať to ani nedělám. Lehce jsem zagooglil a možná by bylo lepší použít něco jako

$select = $form->addContainer('select');
foreach ($radkyTabulky as $item) {
    $select->addCheckbox($item->id);
}

Nicméně předpokládám, že tu třídu budeš chtít de/aktivovat i při kliknutí na už vyrenderované stránce, takže bych raději použil řešení přes JS.

thorewi
Člen | 84
+
0
-

No tak jak rikas jsem to driv delaval ale tak jsem si rekl ze kdyz uz mame ten CheckboxList tak ze ho vyzkousim ale ukazalo se, ze asi vic prace pridava nez ubira :/ Na prvni pohled se zda, ze by opravdu stacilo odebrat to clone a bylo by to v pohode ale nejspise je tam z nejakeho duvodu :) No zkusim otevrit issue na githubu. Nicmene diky za spolupraci.