Vlastní a pokročilé nastylování SelectBoxu

emololftw
Člen | 82
+
0
-

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)