Jak renderovat formulář do sloupců?
- petr.pavel
- Člen | 535
Ahoj lidi,
mám formulář rozdělený na několik skupin pomocí $form->addGroup().
Potřeboval bych první polovinu skupin zobrazit v jednom sloupci a druhou
polovinu ve druhém sloupci. DefaultFormRenderer mi vyhovuje, jen potřebuji
výsledek veprostřed přeříznout nějakým ‚</div><div
id=„druhySloupec“>‘ nebo ‚</td><td>‘.
Nerad bych se uchyloval k ručnímu vykreslování, je to hafo položek a nejspíš se budou často měnit.
Předem dík za rady.
Petr
P.S. Nette 2.0 stable
- llook
- Člen | 407
DefaultFormRenderer se dá do určité míry konfigurovat, nějak zhruba takto:
$renderer = new \Nette\Forms\Rendering\DefaultFormRenderer;
$renderer->wrappers['form'] = array(
'container' => 'table'
);
$renderer->wrappers['group'] = array(
'container' => 'td'
);
$form->renderer = $renderer;
- petr.pavel
- Člen | 535
@llook: O tom vím, ale není mi jasné, jak bych s tím mohl udělat, co potřebuji.
Tímhle nastavením bych mohl třeba každý pár hodit do tabulky nebo každý label udělat růžový, ale nenapadá mě, jak prvních 10 skupin obklopit divem.
P.S. Ještě podotýkám, že bohužel nemůžu každé skupině nastavit float: left;, protože to by vykreslovalo po řádkách, kdežto já potřebuji po sloupcích (tj. nejdřív naplnit celý jeden sloupec a pak teprve celý druhý sloupec).
Editoval petr.pavel (3. 2. 2012 21:08)
- petr.pavel
- Člen | 535
Tak jsem to vyřešil následovně:
{form RegistrationForm}
{var $renderer = $form->getRenderer()}
{var $renderer->render($form, 'blbost')} {* render() musím volat, abych nastavil $renderer->form, který je protected *}
{foreach $form->getGroups() as $group}
{!$renderer->renderControls($group)} {* zde se testuje $renderer->form, proto ho musím nahoře nastavovat *}
...tady si vyřeším to rozdělení na sloupce...
{/foreach}
{/form}
No nic, kdyby vás napadlo něco lepšího, sem s tím.
P.S. Kdysi jsem u nějakého vlákna viděl [SOLVED] v nadpisu. Teď ale nevidím možnost, jak titulek vlákna upravit. Jak tam mám dostat to SOLVED?
Editoval petr.pavel (3. 2. 2012 20:25)