Otázka ohľadne komponenty
- ruller
- Člen | 29
Chcel by som vedieť ako funguje cyklus komponenty, pretože nastáva u mňa
dosť čudné chovanie komponenty.
Vykreslujem kalendár pomocou komponenty
class Calendar extends \Nette\Application\UI\Control
{
/** @persistent */
private $month;
/** @persistent */
private $year;
public function __construct()
{
parent::__construct();
}
public function render($year,$month,$zobraz_datum)
{
$this->year=$year;$this->month=$month;
$template = parent::createTemplate();
$template->setFile(__DIR__ . '/calendar.latte');
$template->datumy=$zobraz_datum;
$template->year=$this->year;
$template->month=$this->month;
// dalsie operacie
...
...
$template->render();
}
}
volám ju v presenteri
protected function createComponentCalendar()
{
return new Calendar();
}
v šablóne predávam parametre
{control calendar,$year,$month,$zobraz_datum} //rok vykreslenia, mesiac
v zobraz_datum mám pole kde sú rozhrania dátumov ktoré sa majú zvýrazniť pomocou css
$zobraz_datum=array(array("2012-03-21", "2012-03-30"),array("2012-03-07" , "2012-03-21"));
vnútri calendar.latte spúšťam foreach ktorý overuje či aktuálny deň
je medzi tými dátumami, volám tam strtotime. ak je tak nastaví sa určité
css, lenže nastáva problém, keď vykreslím viac takýchto mesiacov, tak by
mali byť zvýraznené oné dátumy, ale zvýrazní sa vždy len posledné
array. akokoľvek to prehodím. Môže mi niekto vysvetliť prečo je to tak
?
ten cyklus taký mám že: vykreslenie mesiaca, nastavenie css podľa
zobraz_datum, vykreslenie ďalšieho atď lenže stále len podľa poslednej
položky v poli sa to zvýrazní.
{foreach $datumy as $i=>$datum}
{if strtotime($test) >= strtotime($datum[1]) and strtotime($test) <= strtotime($datum[2])}
//nastavenie css
{/if}
{/foreach}
toto sa overuje pre každý deň v mesiaci
Ďakujem
- David Matějka
- Moderator | 6445
prvni vec, co se mi nezda, je $datum[1] a $datum[2] – pole jsou cislovany od nuly :)
- ruller
- Člen | 29
tak vyriešené.
v overovacom foreach som pridal {foreach $datumy as $i=>$datum}
{if strtotime($test) >= strtotime($datum[1]) and strtotime($test) <=
strtotime($datum[2])}
//nastavenie css
{/if}
{breakIf je nastavena class}
{/foreach}
pre daný deň nepokračuje foreach keď už má nastavenú class, napadlo ma to až teraz, že prečo vždy len posledné sa zobrazuje