„Kořenové“ komponenty generují v odkazech persistentní parametry „vnořených“ komponent – proč?
- emil
- Člen | 9
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).
- emil
- Člen | 9
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ě.