Obaleni radio buttonu DIVem
- Ja
- Člen | 260
Zdravim,
vytvarim neco jako nastenku, kde kazdy vzkaz muze mit svoji vlastni barvu,
vystup bych si zjednodusene predstavoval asi takovyto:
<?php
<div style="background-color: #111111; float:left; width: 10px; height: 10px;">
<input type="radio" name="barva" value="#111111">
</div>
<div style="background-color: #222222; float:left; width: 10px; height: 10px;">
<input type="radio" name="barva" value="#222222">
</div>
<div style="background-color: #333333; float:left; width: 10px; height: 10px;">
<input type="radio" name="barva" value="#333333">
</div>
?>
Tusil by nekdo, jak tohoto obaleni DIVem docilit v tovarnicce?
Predem diky moc.
Ja
- Ja
- Člen | 260
gmvasek: diky za radu, nemas k tomu vlastnimu renderingu nejakej odkaz, jak na to?
jinak:
<?php
$barvy = array(
'#ffffff' => '',
'#000000' => '',
);
$f->addRadioList('barva', 'Barva', $barvy);
?>
na normalni input bych to dokazal prilepit pres getcontrolprototype, ale takle netusim – jak to dostat ke kazdymu prvku zvlast? V ty array?
- Mikulas Dite
- Člen | 756
Nejde to, už loni jsem to posílal https://forum.nette.org/…-jako-string, je tam sice i moje oprava, ale Nette se od té doby tak změnilo, že to asi nevyužiteš.
Teď je jediné řešení přepsat si RadioList
na něco
lepšího. Doporučuju ale popřemýšlet, jestli by nebylo lepší tu stránku
tvořit jinak.
- ic
- Člen | 430
Možná by pomohlo ostylovat přímo ty radio buttony pomocí css… je na to taková finta:
http://www.thecssninja.com/…ustom-forms/
už jsem to jednou použil, je to pěkné a netřeba javascriptu a nemá to problém ani s tím když uživatel vypíná / zapíná css (ale to stejně nikdo nedělá).
funguje to nasazením obrázku nad původní formulářový prvek, takže (id-čkem nebo třídou) se dá použít obrázek rozličných barev a tvarů
Editoval ic (23. 4. 2011 21:10)
- Jur4
- Člen | 51
Při ručním renderu by mělo jít vyrenderovat jednotlivé radiobuttony. Stačí když si to pole $barvy předáš do šablony a pak to vyrenderuješ nějak takhle.
{foreach $barvy as $barva => $label}
<div style="background-color: {$barva}; float:left; width: 10px; height: 10px;">
{$form['barva']->getControl($barva)}
</div>
{/foreach}
Myslím, že to k tomu inputu vyrenderuje i prázdný label. Ale ten můžeš skrýt ve stylech.
Editoval Jur4 (23. 4. 2011 21:40)