Obaleni radio buttonu DIVem

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

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

Aurielle
Člen | 1281
+
0
-

Vlastní renderování, nebo nastylovat přímo příslušný input…

Ja
Člen | 260
+
0
-

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?

mkoubik
Člen | 728
+
0
-

Vlastní renderování moc nepomůže, protože všechny radiobutony jsou součástí jednoho controlu.

Ja
Člen | 260
+
0
-

ok, tak jiny napady?

Mikulas Dite
Člen | 756
+
0
-

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.

Ja
Člen | 260
+
0
-

odkaz v tvym threadu na github je nefunkcni :-/

jinak nenapada te teda jak by se to dalo dat resit jinak? smysl je jasnej, moznost urcit si, jakou chces barvu prispevku (ale zas nejak ergonomicky, aby to uzivatel mohl pochopit)

ic
Člen | 430
+
0
-

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
+
0
-

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)

Ja
Člen | 260
+
0
-

Problem solved.

Jur4: rucni render pomohl, diky moc! a kluci pred tebou rikali, ze to nejde:-)

ic: tobe take diky za zajimavy postrceni…

..a diky i vsem ostatnim:)