Nutnost definice render nebo action metody v presenteru

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

Zdar,

nějak jsem teď narazil na „problém“ vynucení definice render nebo action metody pokud potřebuji vytvořit odkaz s parametrem. Nějak se nemohu zbavit pocitu, že kdysi dávno tato nutnost neexistovala.

class TestPresenter extends Presenter{

	/** @persistent */
	public $id;

	public function beforeRender(){
		$this->template->id = $this->id;
	}
}

pokud pak v nějaké komponentě generuji link

{plink Test:default, $id}

tak to „vyhnije“ na chybě „Unable to pass parameters to action ‚Test:default‘, missing corresponding method.“ a jsem nucen do daného presenteru přidat render nebo action metodu

class TestPresenter extends Presenter{

	/** @persistent */
	public $id;

	public function beforeRender(){
		$this->template->id = $this->id;
	}

	public function actionDefault($id){}

	/*
	* nebo
	* public function renderDefault($id){}
	*/
}

i když jí reálně vůbec nepotřebuji. Zdá se mi to, nebo dříve nebylo nutné takovouto prázdnou metodu uvádět?

Editoval Etch (10. 12. 2014 13:05)

David Matějka
Moderator | 6445
+
+4
-

nemusis ji uvadet, staci misto toho napsat nazev parametru pri vytvareni linku

{plink Test:default id => $id}
Etch
Člen | 403
+
0
-

Hech… jsem věděl, že to bude nějaká kravina. To je tak, když někdo kdo tam ten název parametru vždy zapisuje, předělává aplikaci po někom, kdo ty názvy parametrů explicitně v šablonách v makru neuvádí, přepíše jen názvy proměnných, odmaže nepotřebné věci a pak nemůže pochopit proč to nefunguje, když to vždycky fungovalo.

Každopádně rozhodně díky, protože na to, že to bude tímhle, bych asi jen tak nepřišel. :D