Vykreslování custom labelu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Mikee1988
- Člen | 2
Zdravím,
s Nette začínám. Mám problém s vlastním vykreslováním formuláře.
Potřebuji v HTML pomocí Latte dospět k výsledku:
<input type="radio" name="sex" value="male" id="male"/>
<label for="male">
<div class="box">Male</div>
</label>
<br />
<input type="radio" name="sex" value="female" id="female"/>
<label for="female">
<div class="box">Female</div>
</label>
V továrničce pro tvorbu formuláře jsem se snažil dopátrat místa,
ve kterém se tvoří kód labelu takovým způsobem:
$gender = $form->addRadioList('gender', 'Pohlaví:', $sex)->getLabelPrototype()->getHtml();
Což je špatně, jelikož výsledkem je prázdný řetězec.
Jak je tedy možné dospět k požadovanému tvaru?
Jinak řečeno, jak text labelu obalit divem s požadovanou
třídou? ->
<input type="radio" name="sex" value="male" id="male"/>
<label for="male">
<div class="box">Male</div>
</label>
s použitím Latte zápisu:
<tr class="required">
<th>{label gender /}</th>
<td>{input gender}</td>
</tr>
Dík za odpověď.
- Mikee1988
- Člen | 2
Tak po delší době tápání jsem došel na řešení,
pokud je to špatně, tak mě prosím opravte!
Továrnička produkující požadovanou položku:
protected function createComponentAddForm()
{
$form = new Form;
$muz = new Nette\Utils\Html;
$muz->setHtml('<div class="box">muž</div>');
$sex = array(
'm' => $muz,
'f' => 'žena',
);
$form->addRadioList('gender', 'Pohlaví:', $sex);
return $form;
}