Jak pomocí FormRenderer upravit Label u jednotlivých položek v RadioList
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- tobice
- Člen | 30
Používám vlastní FormRenderer, který vychází z Bootstrap 3 rendereru (https://github.com/…Renderer.php).
Potřeboval bych, aby výstup u jedné položky v RadioListu vypadal nějak takto:
<label>
<input type="radio">
<span>Label</span>
</label>
Tj. potřeboval bych obalit popisek jedné položky spanem. Např. u checkboxu to nebyl problém:
$control->caption = Html::el("span")->setText($control->caption);
Ale u RadioListu, kde těch popisků je dynamický počet, nevím jak na to. Potřebuji to, protože používám externí šablonu formulářů, která toto vyžaduje. Určitě by se to dalo řešit nějakým JavaScriptem či úpravou stylů, ale toto by mi přišlo nejlepší.
- David Matějka
- Moderator | 6445
Jako label nemusis pouzivat jen text, muzes pouzit Html
$form->addRadioList('foo', 'Foo', ['key1' => Nette\Utils\Html::el('span')->setText('Label')])
Univerzalne pak muzes upravit renderer a nekam za tohle pridat:
if($control instanceof Controls\RadioList) {
$control->items = array_map(function($value) {
return Html::el('span')->setText($value);
}, $control->items);
}