Formuláře – insertBefore se ve spojení s ControlGroup vykresluje ve špatném pořadí

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
norbe
Backer | 405
+
0
-

Narazil jsem na problém, pokud chci přidat formulářový prvek před nějaký jiný, který je v nějaké skupině, tak se sice zařadí správně do stromu komponent, ale vykreslí se v pořadí špatném.

Příklad:

$form->addGroup("Skupina");
$form->addButton("add", "Přidat řádek");
...
$form->addComponent($container, $name, $buttonName);

Se vykreslí jako:

Skupina:
 - Přidat řádek
 - $container

Pokud zakomentuju addGroup, vykreslí se to v očekávaném pořadí:

Skupina:
 - $container
 - Přidat řádek
enzo
Backer | 15
+
0
-

rešil jsem úplně stejný problém a tady je výsledek kdyby to někdo někdy taky hledal:

$group = $form->addGroup($name, FALSE);
$form->addButton("add", "Přidat řádek");
...
$form->addComponent($container, $name, $buttonName);

foreach($form->getControls() as $item) {
	$group->add($item);
}

$form->setCurrentGroup($group);

je to sice trošku vopruz, ale funguje to spolehlivě. btw, problém původního kódu je podle mého názoru ten, že ControlGroup už nemá možnost $insertBefore čili v groupě nelze prvky vkládat před jiné…