Vyžadování persistentních parametrů presenteru v definici každé akce

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

Je nutné vynucovat uvedení persistentních parametrů presenteru i v každé metodě?

Následující ukázka vyhodí pro Profile: $id.

error: Passed more parameters than method Presenter\Front\Profile::actionDefault() expects.

class ProfilePresenter extends BasePresenter
{

	/** @persistent */
	public $id;



	public function actionDefault()
	{
		dump($this->id);
	}

}
Ondřej Mirtes
Člen | 1536
+
0
-

Ukaž v šabloně ten {link}, asi ho zapisuješ špatně (myslí si, že má strčit něco do actionDefault, namísto použití persistentního parametru).

Mikulas Dite
Člen | 756
+
0
-

Aha, máš pravdu. Našel jsem tam <a n:href="Profile: $id">, bez čárky. S ní se to chová jinak. Trošku mě překvapuje, že to funguje. Nemělo by to teda spíš hodit warning nebo něco?

Editoval Mikulas Dite (25. 5. 2011 22:13)

Ondřej Mirtes
Člen | 1536
+
0
-

Pro zápis persistentního parametru musíš psát tohle:

{link Profile: 'id' => $id}

Ten tvůj zápis je skutečně pro parametr do metody.

Mikulas Dite
Člen | 756
+
0
-

Aha, rozumím. Při jednom parametru by to sice mohlo poznat, ale to by byla moc velká magie, protože pro víc už by to nebylo jasné. U normálních parametrů to bere podle pořadí.

Ok, díky za objasnění.