PHP Strict standards: Declaration of renderDefault()

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

Ahoj,

snazim se pochopit, proc je tohle problem:
PHP Strict standards: Declaration of FrontModule\FilterPresenter::renderDefault() should be compatible with that of FrontModule\FrontPresenter::renderDefault() in ...

Muzete me nekdo nakopnout spravnym smerem?

redhead
Člen | 1313
+
0
-

Neměl bys dědit od presenteru, který se dá normálně používat, společnou funkčnost dej do nějakého abstraktního BasePresenteru.

Edit: jinak je to proto, že v předkovi definuješ metodu s/bez parametru (nebo jiným počtem nebo jinými typy), zatímco v tomto potomkovi ji definuješ jinak, porušuješ tak dědičnost.

Pokud ovšem toho předka nepoužíváš k normálnímu vykreslení stránky a máš ho jako abstraktního prapředka, tak proč mu definuješ render metody?

Editoval redhead (27. 2. 2011 21:08)

gerades
Člen | 40
+
0
-

Aha, chapu.

Mam tam treba presenter a on nacita zakladni udaje z DB (a ty jsou spolecne pro vsechny). Kde by to melo byt, kdyz ne v render metode? Radeji se ptam… nechci udelat dalsi chybu, tim ze to narvu zase jinam :)

voda
Člen | 561
+
0
-

K tomu slouží metody startup a beforeRender. Výběr metody podle toho kdy to budeš potřebovat. viz: Presenter

Editoval voda (28. 2. 2011 10:09)

Chbox
Člen | 125
+
0
-
abstract class Front_BasePresenter extends BasePresenter
{
	public $data;

	public function beforeRender()
	{
		$this->data = Model::loadData();
	}
}

a normální Presenter

final class Front_UvodPresenter extends Front_BasePresenter
{
	public function beforeRender()
	{
		parent::beforeRender();
		Debug::dump($this->data);
	}
}
gerades
Člen | 40
+
0
-

Aha, moc diky vsem. To me nenapadlo, ze by to mohl byt problem.