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
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
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é…