Předání parametrů z presenteru do komponenty

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

Zdravím,

jsem začátečník a chtěl bych vás poprosit o radu. Na fóru jsem prošel hodně témat, kde se toto řeší, ale jsem natvrdlej a stále to nechápu.

Jde mi o (předpokládám) úplně jednoduchou věc a to dostat vstupní proměnné z presenteru do komponenty.

V níže uvedeném kódu je moje (mylná) představa o tom, jak by to mělo fungovat, ale nefunguje.

Komponenta

<?php
class CalendarControl extends \Nette\Application\Control {

	public function render($month=null,$year=null) {
		// kód, kde se pracuje s $month a $year
	}
}
?>

Presenter

<?php
protected function createComponentKalendar() {
	// zde bych si představoval, že se takto jednoduše předají argumenty do komponenty
        $control = new \Components\CalendarControl('05','2013');
        return $control;
}
?>

Prosím o jakékoliv nasměrování.

Mockrát děkuji

Tabetha
Člen | 140
+
0
-
<?php
class CalendarControl extends \Nette\Application\Control {
private $month;
private $year;
    public function __construct($month=null,$year=null) {
        $this->month = $month;
        $this->year = $year;
    }
    public function render()
    {
	// tvoj kod
    }
}
?>
<?php
protected function createComponentKalendar() {
    // zde bych si představoval, že se takto jednoduše předají argumenty do komponenty
    return new \Components\CalendarControl('05','2013');

}
?>

takto by to nešlo?

fagan
Člen | 3
+
0
-

Mockrát děkuji, to je přesně ono!

Zvláštní, že jsem to v žádném tutorialu nenašel, přitom mi to přijde jako docela zásadní poznatek :)

Tabetha
Člen | 140
+
0
-

neni začo :) … tiež som to kedysi hľadal a nejako som sa dostal náhodou k tomu :D

Šaman
Člen | 2666
+
0
-

Když komponentu vytváříš, voláš samozřejmě konstruktor, to není ani tak moc Nette, jako OOP.

To předávání parametrů metodě render($param) se zase hodí při předávání parametrů z šablony {control CalendarControl, '05','2013'}.
Problém však je, že s těmi parametry můžeš pracovat právě jen v medodě render, nesmí tedy nějak ovlivnit stav komponenty.

Foowie
Člen | 269
+
0
-

Hlavně nezapomeň zavolat konstruktor předka, jinak se sem tam objeví nevysvětlitelná chyba .)