Jak na kalendar v Nette + poslanie parametrov do komponenty?
- hizo
- Člen | 48
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
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
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;
}
- 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
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.