Jak na grid s checboxy a daty z db tabulek?

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

Dobrý den,

prosím Vás, rád bych si vytvořil grid – tabulku se sloupci a řádky, řádky budou tvořit checkbox a hodnoty vytažené z různých tabulek.
Tuhle srandu chci vytvořit jako komponentu a zají má mě, jak tam mám vložit ty formulářové věcičky (checkboxy a buttony s callbacky)? Napadá mě, jestli v nějaké metodě komponenty, např. výchozí render() vytvořím instanci AppForm(), kde přidám checkboxy + buttony a callbacky a ručně tento formulář vykresluji? Nebo je to úplně naopak, vytvořím formulářovou komponentu a tam přidávám položky? Případně v této formulářové komponentě vytvořím nějaké conteiner a tam dávám ty položky?
Můžete konkrétní případ prosím?

jtousek
Člen | 951
+
0
-

Co tu komponentu udělat jako potomka AppForm s vlastní speciální šablonou?

Mesiah
Člen | 240
+
0
-

jtousek napsal(a):

Co tu komponentu udělat jako potomka AppForm s vlastní speciální šablonou?

Hmm, zní to nadějně. Můžete mi poradit s tímhle: jak vytvořím šablonu, myslím obdobu $template = parent::createTemplate(); $template->setFile(dirname(__FILE__) . '/GridForm.phtml');? Nakonec bych měl asi vracet metodu rodiče, ano?

jtousek
Člen | 951
+
0
-

Tady je trochu problém.

Formulář samotný totiž nedědí od Control, tudíž se nejedná o vykreslitelnou komponentu. Tzn. nemá vlastní šablonu. Když jsem to před několika měsíci řešil tak se to dělalo následovně, zda již je lepší metoda netuším.

Použil jsem
{include '@form.phtml', form => $presenter['myForm']}

Pro control se jinak používá
{control myForm}

viz. https://forum.nette.org/…0-radku-kodu

arron
Člen | 464
+
0
-

IMHO je daleko lepsi tomu udelat control (tridu dedici od Control) a veskerou logiku udelat tam (cili vytvorit pomoci nejake tovarnicky AppForm apod.). Viz. dokumentace :-)

Mesiah
Člen | 240
+
0
-

Výsledek by měl vypadat takto.
Možná Vás napadne, jak můžu k požadovanému výsledku dojít osobně už vůbec nevím…

phx
Člen | 651
+
0
-

Co si upravit DataGrid?

Minimalne se tam muzes inspirovat jak je to reseny.

Tharos
Člen | 1030
+
0
-

A co třeba jednoduše takhle nějak?

Mesiah
Člen | 240
+
0
-

phx datagrid je moc složitý, přijde mi to jako jít kanonem na vrabce, už jsem na něj koukal.

Tharos tohle se blíží tomu, co chci dosáhnout, ale neni to ono… když jsem usínal, tak mě napadlo, že bych to mohlo udělat podobně, jaké je tvé řešení, vytvořit si továrničku na formulář a pak se na ni při renderingu napojit a přidávat tolik checkboxů kolik je položek, zatím sice nevím přesně, jak bude vypadat template, ale snad to nějak dám dohromady…

Edit:
Dal jsem to dohromady. Jenže, řeším otázku, jak dát dohromady checkbox + další informace (tím myslm id, popis, pocet, atd…) mám si na to vytvořit nějaký objekt, nebo bude stačit pole? Alá $item = array($this['form']->addCheckbox($i->id), $i->id, $i->desc, $i->count, ...)? Je tohle vhodný postup, nebo spíš berlička pro kulhavku?

E2: Zkusil jsem asociativní pole, jede to jak chci, takže asi úspěšně vyřešeno… tyo… :)

Editoval Mesiah (14. 10. 2010 10:27)

Tharos
Člen | 1030
+
0
-

Možnosti jsou tam prakticky neomezené, můžeš podobně koncipované komponentě předat nějaký data source, ze kterého se řádky toho formuláře budou generovat (nemusíš se omezovat jenom na omezené možnosti asociativního pole) a podobně. Ale tak hlavně, že píšeš, že snad úspěšně vyřešeno :).