Jak na kalendar v Nette + poslanie parametrov do komponenty?

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

Zdravim…mam takyto problem: dajme tomu ze mam v Nette funkciu function createComponentKalendar kde mam kod v php na vytvorenie kalendara.
Na stranke sa prihlasi uzivatel, ked zada dobre udaje je presmerovany na User:online..cize chcem aby sa pre kazdeho uzivatela po prihlaseni vytvoril kalendar pomocou hore uvedenej funkcie a vo view ho uz len vypisem {control kalendar}, problem je v tom ze funkcia na vytvorenie kalendara potrebuje parametre $month a $year…ako na toto?je takyto postup vobec spravny?v tom kalendari chcem totiz mat jednoduchy formular kde uzivatel zada mesiac a rok a vykresli sa mu prislusny kalendar a taktiez tlacitka Previous Month a Next Month kde si bude moct prepinat mesiace manualne

Editoval hizo (17. 2. 2011 22:04)

na1k
Člen | 288
+
0
-

Myslím že správná cesta by měla jít přes signály.

Komponenta (control) bude mít nějaké vnitřní proměnné – například rok a měsíc, defaultně třeba aktuální – a bude existovat signál řekněme setDate($year, $month), který tyto vnitřní proměnné změní a invaliduje komponentu kalendáře. Pokud budeš používat ajax (mám trochu zmatek v tom, jestli je v aktuální verzi funkční), bude se to měnit ajaxově, jinak se to přesměruje na samo sebe a v adrese ti přibudou zvolené parametry.

V šabloně komponenty bys pak použil něco jako {link setDate! 2011, 02} což by se převedlo na volání metody handleSetDate($year, $month)

To je postup pro odkazy na jednotlivé měsíce/roky. Co se týče formuláře, měl bys v komponentě továrničku a v šabloně komponenty zase {control myForm}. V obsluze formuláře bys pak vpodstatě prováděl to samé co v obsluze signálu. Anebo bude obsluha spočívat v přesměrování na signál, což ti umožní navigovat se jak formulářem, tak i pomocí odkazů (typicky šipky pro posun mezi měsíci/roky).

bojovyletoun
Člen | 667
+
0
-

Třída kalendář bude mít properties $year, $month. Zároveň bych je označil jako persistentní.
možnosti tvorby komponenty
1)Parametry předáš třeba v továrně.

function createcomponentCal(){
$c=$this->cal=new Calendar;
$c->month=13;
return $c;
}
  1. V render metodě (šablona stránky)

{control cal2,2011,4}

Vyřešení odkazů vevnitř na změnů $y a $month: asi bych tam dal odkazy na signál zvyšující a snižující rok a měsíc, ale nepřipadá mi to jako moc dobré řešení(defakto to by to měl být view na ne signál, protože to jen mění pohled a jinak to žádnou činnost nedělá. )

Jinak se podívej na kód visualpagiantoru. taky mám pocit, že je addon Calendar, ale nemohu ho najít.

hizo
Člen | 48
+
0
-

keby je addon calendar tak mam po probleme…mam totiz len funkciu ktora vytvara kalendar co sa uklada do premennej $calendar vo forme stringu a vypisuje sa vo forme tabulky, vyzera to takto .Potrebujem vytvorit kalendar do ktoreho sa daju ukladat aj eventy, napriklad casovy udaj, na to som si stiahol DateTimePicker kde pri odoslani by som danemu uzivatelovi do databazi pridal dany casovy udaj a ten sa pri renderovani kalendara znova z databaze taha. neviem moc ako na to v nette.