Sestavení vzhledu formuláře již v metode createComponent…

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

Ahojte,

vytvořil jsem dynamický formulář, který jsem upravil podle sebe uvnitř šablony. Problém nastal ve chvíli kdy jsem jedno políčko odstranil při generování uvnitř metody createComponent…().

Ovšem pokud jsem v latte použil {widget form} fungovalo vše přesně tak, jak jsem potřeboval, ale nyní nemůžu prvky toho formuláře přemístit jak bych potřeboval…

Jediné co mě napadlo je už při generování prvků uvnitř metody createComponent…() nastavit i pozici některých prvků formuláře, ale jak to nevím…

V dokumentaci se píše pouze o vykreslování uvnitř šablony.

Předem díky za odpovědi :)

Filip Procházka
Moderator | 4668
+
0
-

Pořadí prvků by mohlo jít odpojením a připojením na požadované místo

$form->addText('jedna');
$dva = $form->addText('dva');
$form->addText('tri');
$form->addText('ctyri');
$form->addText('pet');

$form->removeComponent($dva);
$form->addComponent($dva, 'dva', 'pet'); // třetí argument $insertbefore

Toto nebude fungovat, pokud ve formulář používáš ControlGroup (->addGroup()), protože z něj nejdou prvky odstranit. Pokud chceš vědět jak se dá hacknout odstranění prvku z formuláře, pak kompletní implementace je v mém replicatoru, s tím rozdílem, že odstraňuje celý Container. Odstranění jednoho prvku by bylo výrazně jednodušší.

A na závěr dodám, že odstraňování komponent nepodporuji. Efektivnější je komponenty v první řadě správně sestavit. V případě replicatoru nebylo zbytí, kvůli principu jakým funguje, takže odstraňování bylo potřeba.

Editoval HosipLan (21. 7. 2011 19:38)