addRadioList a separator okolo prvků label, input

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

ahoj jde nějak bez zásahu do Nette změnit separator radio listu tak aby misto

<label>
<input>
<br>

bylo

<div>
<label>
<input>
</div>

představoval jsem si to použitím:
$form->addRadioList('makers', 'Výrobci', $makers)->separatorPrototype->setName('div');
nebo
$form->addRadioList('makers', 'Výrobci', $makers)->separatorPrototype->setName(Html::el('div'));

ale udělá to:

<label>
<input>
<div></div>

já to udělal zatim prasácky se zásahem do Nette v /Forms/Controls/RadioList.php (line 150):

$container->add("<div>".(string) $control . (string) $label . $separator . "</div>");

ale je to asi to nejhorší řešení co existuje…

Otázkou je zda něco takového(chápej lepší cestou) RadioListu nechybí (mě teda ano)…

David Grudl
Nette Core | 8228
+
0
-

Nepadá mě jen poděděním elementu a úpravou metody getControl.

worsik
Člen | 40
+
0
-

Přiznám se, že bych taky ocenil, aby kromě containeru, který obalí celý radiolist a separatoru, ktery oddeluje jednotlive inputy, existoval i container pro jednotlive inputy. Neco jako separatorContainerStart a separatorContainerEnd. Pak bych si mohl jako start nastavit <div> a jako end </div> nebo zachovat stavajici chovani pouze nastavenim End na <br />.

Prozatim vzdy kdyz resim zobrazeni radiolistu, tak bud vykresluju rucne a nebo nastavim container na <span class=„radio“> a separator na NULL a styluju si to v CSS jako .radio label a .radio input