Vlastní a pokročilé nastylování SelectBoxu
- emololftw
- Člen | 82
Ahoj všem! Jdu si k Vám pro radu:
Mám SelectBox v klasickém nette formuláři, kdyby se jednalo o jeden
vyjimečný případ, vím, že by bylo řešení jej nastylovat manuálním
renderem ve značkách {form}
. Avšak já pro svojí aplikaci
potřebuji v selectu zohlednit více dat, než jen id => title
.
Data jsou entity z databáze (Nextras\ORM
). Formulář používám
zatím na jediném místě, takže je to řešeno následovně:
Factory
$form->addCheckboxList('xxx', 'module.xxx.groups.tagsFor', iterator_to_array($prepareData()))
data bych si pak následovně vykresluji:
Latte
{form tagsForm}
<div class="list-group" n:inner-foreach="$form[xxx]->items as $technologyId => $technology">
<label class="list-group-item d-flex">
<input class="form-check-input me-3" n:name=technologies:$technologyId>
<div class="d-flex flex-column">
<div class="d-flex align-items-center">
{*include coloredDot, $technology->getColor(), 'dot-15'*}
<div class="bi-square-fill me-2" n:attr="style => sprintf('color:%s', $technology->getColor())">
<!-- colored dot -->
</div>
<div class="fw-500">
{$technology->getName()}
</div>
</div>
<small class="ps-4">
{$technology->getDescription()}
</small>
</div>
</label >
</div>
<div class="d-grid mt-3">
{input submit}
</div>
{/}
Hrozně by se mi líbilo mít tento prvek formuláře jako komponentu. Jelikož do budoucna, kdy se tento výběr položek promítne v cca 10 formulářích, je na škodu všechny je kvůli tomu vykreslovat manuálně.
Je možné takto nastylovanou komponentu vložit do formuláře?
Něco ve smyslu:
$form->addComponent( $this->nastylovanySelectfactory->create() );
Děkuji.
PS: Našel jsem knihovnu od nextras, ale je depreaced
Editoval emololftw (8. 3. 2022 17:10)