Jak renderovat formulář do sloupců?

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

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

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

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

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)