Problem s tvorbou kalendare

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

Zdravim, snazim se udelat vlastni komponentu pro kalendar, ktery bude obsahovat informace v jednotlivych bunkach podle databaze. Moje idea je takova, ze pri generovani bunky se priradi dodatecne informace pro danou bunku, ktere se pak pouzijou pri generovani. Tohle prirazovani jsem chtel udelat ve stylu eventu, kdy pro kazde tvoreni bunky bude volan event, ktery bude obslouzeny v nejakem presenteru. Jenze muj problem je ten, ze v handleru eventu chci zpatky do kompoenenty nastavit nejake ty dodatecne informace a zkousel jsem to udelat pres reference, ale to se mi nepodarilo a nette mi vyhodilo po renderovani tenhle warning:

Warning: Parameter 2 to DefaultPresenter::cellCreate() expected to be a reference, value given in ...\libs\Nette\ObjectMixin.php on line 84

Jak tedy vyresit zpetne nastavovani dat do komponenty? Napadlo me pres metodu, ale to mi neprislo zrovna jako pekne reseni. Ma na to nette nejaky mechanismus nebo se to musi resit nejaky bypassem?

Ukazka:
Komponenta

public $onCellCreating;

public function render()
{
...
$this->onCellCreating($this, $data);
...
}

Presenter

public function onCellCreating($sender, &$data)
{
   $data = "test";
}

Diky

Editoval Dj_Oggy (25. 8. 2009 11:59)

Foowie
Člen | 269
+
0
-

Komponenta:

public $onCellCreating = null;

public function render()
{
...
if($this->onCellCreating != null)
	call_user_func_array($this->onCellCreating, array($this, &$data));
...
}

Presenter:

$komponenta->$onCellCreating = array($this, "onCellCreating");
...
public function onCellCreating($sender, &$data)
{
   $data = "test";
}

Co něco takového?

Editoval Foowie (25. 8. 2009 12:10)

Dj_Oggy
Člen | 67
+
0
-

Stacilo zmenit

$this->onCellCreating($this, $data);

na

$this->onCellCreating($this, &$data);

a handler z

public function onCellCreating($sender, &$number)
{
}

na

public function onCellCreating($sender, $number)
{
}

Pokud se neprovede ta druha zmena, tak php krici warning

Call-time pass-by-reference has been deprecated

Diky za pomoc a sry za zbytecny topik

Editoval Dj_Oggy (25. 8. 2009 12:52)

Honza Marek
Člen | 1664
+
0
-

Úplně zbytečný nebyl. Inspiroval mě.

Dj_Oggy
Člen | 67
+
0
-

Tak aspon k necemu poslouzil :)