„Kořenové“ komponenty generují v odkazech persistentní parametry „vnořených“ komponent – proč?

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

Zdravím komunitu. Řeším (pro mě) nepochopitelné generování odkazů s persistentními parametry. Následuje ukázka a pak dotaz.

Mám 2 komponenty, které jsou hierarchicky „spojené“.

class Test1 extends \Nette\Application\UI\Control {

	/** @persistent */
	public $mygid;

	public function render() {
		$this->template->setFile(__DIR__ . '/Test1.latte');
		$this->template->render();
	}

	public function createComponentTest2() {
		return new Test2;
	}

}
class Test2 extends \Nette\Application\UI\Control {

	/** @persistent */
	public $mypid;

	public function render() {
		$this->template->setFile(__DIR__ . '/Test2.latte');
		$this->template->render();
	}

}

Test1.latte:

<div class="well">
	<p><a n:href="this, mygid=>10">Odkaz 1</a></p>
	{control test2}
</div>

Test2.latte

<div class="well">
	<a n:href="this, mypid=>10">Odkaz 2</a>
</div>

Kliknutím na „Odkaz 2“ dostanu persistentní parametr mypid do URL. A teď ten dotaz – proč v šabloně Test1.latte v odkazu „Odkaz 1“ mám onen mypid?! Dá se toto chování nějak potlačit? Díky za radu (tu hlavně potřebuji).

Unlink
Člen | 298
+
0
-

Dôvodom je, že nette pri generovaní odkazov využíva tzv. globálny stav kde sa prenášajú všetky persistentné parametre.

To čo požaduješ môžeš dosiahnuť napríklad takto

<p><a n:href="this, mygid=>10, test2-mypid=>NULL">Odkaz 1</a></p>
emil
Člen | 9
+
0
-

Unlink napsal(a):

Dôvodom je, že nette pri generovaní odkazov využíva tzv. globálny stav kde sa prenášajú všetky persistentné parametre.

To čo požaduješ môžeš dosiahnuť napríklad takto

<p><a n:href="this, mygid=>10, test2-mypid=>NULL">Odkaz 1</a></p>

Díky za reakci. Toto řešení v mém případě není moc vhodné, protože komponent „typu“ Test2 (tj. těch vnořených) je asi 15 (v nich další zanořené s dalšími persistencemi). Tudíž mě přijde bizarní takto ošetřovat odkazy v „kořenové“ komponentě.

mkoubik
Člen | 728
+
0
-

Nebo naopak zruš ten persistentní parametr (tím pádem ho nebudou zanořené komponenty předávat) a v kořenové komponentě si ho ručně předávej do všech odkazů kde má být.