Poradie elementov vo formulári

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

Zdravím,
ako by sa dalo zameniť poradie jednotlivých elementov vo formulári? Možno by sa zišla funkcia typu $form[‚element‘]->setPosition(5);

kravčo
Člen | 721
+
0
-

Ak to David neimplementuje, vyrieši to priohnutý ConventionalRenderer alebo vlastný renderer. Potom stačí prvku nastaviť option:

$form['element']->setOption('position', 5);

a v rendereri tento option rozpoznávať, prvky podľa neho utriediť a vykresliť.

arron
Člen | 464
+
0
-

Ak to David neimplementuje, vyrieši to priohnutý ConventionalRenderer alebo vlastný renderer

Ono je to malinko slozitejsi…ConventionalRenderer renderuje nejdrive vsechny skupiny (Grup), pak vsechny ostatni controly a nakonec hidden fieldy. Vzhledem k tomu, ze skupinu nelze zjistit jinak nez ->getGroups(), tak se velmi spatne manipuluje s poradim fieldu v konecnem vystupu (clovek je proste limitovany tim, ze skupiny se musi vykreslit pomoci ->getGroups()). Troufam si rict, ze bez nejake upravy chovani grup se toto bude implementovat velmi osklive. Jedine si s tim hrat nejak v ramci skupin, ale tam uz se zase prvky vykresluji v tom poradi v jakem byly pridany, takze se s tim manipuluje pomerne jednoduse (lec neni to samospasitelne).

kravčo
Člen | 721
+
0
-

Keď som písal o priohnutí, myslel som tým podedenie ConventionalRendereru, prípadne vlastnú implementáciu IFormRendereru.

Samozrejme riešiť grupy a zároveň ľubovoľné poradie prvkov je asi nezmysel. Má zmysel riešiť poradie grúp a poradie prvkov v rámci jednej grupy, alebo grupy ignorovať a riešiť celkové poradie prvkov vo formulári.

obe riešenia mi pripadajú rozumne implementovateľné zdedením triedy CR a prepísaním metód CR::renderBody() a CR::renderControls() tak, aby sa pred prechádzaním cyklu s grupami/prvkami pole s nimi utriedilo (nejakým vlastným algoritmom triediacim podľa nastavenéj vlastnosti „position“).

arron
Člen | 464
+
0
-

Má zmysel riešiť poradie grúp a poradie prvkov v rámci jednej grupy,…

A kdyby se vyresilo tohle, tak je t o vyresene cele, protoze kdyz nebudes grupy definovat, tak si vyresis poradi vsech prvku. A kdyz si je nadefinujes, tak budes resit poradi v ramci grup:-) Toz to by asi bylo fajn:-) Vzhledem k tomu, ze jsem si ted psal vlastni renderer, tak mam jenom malinko obavu jak to bude s vykonem, kdyz se do toho vseho prochazeni formularovych prvku (a ze se prochazeji az neprijemne mnohokrat v prubehu renderovani) prida jeste nejake razeni:-/