Předání parametrů z presenteru do komponenty
- fagan
- Člen | 3
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
<?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?
- Šaman
- Člen | 2666
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.