Tlačítko zpět jako u prohlížeče
- gizer
- Člen | 67
Dobrý den,
rád bych se dozvěděl jak vyřešit tento problém.
Přistupuji na jednu cílovou šablonu ze dvou různých zdrojových šablon, které mají i různé presentery pomocí klasického odkazu.
<a n:href="Cil:default">Jdi na cílovou šablonu</a>
Může mně někdo prosím poradit, jak přesně má v cílové šabloně vypadat zpětný odkaz, který vede buď na zdrojovou šablonu 1 nebo 2 podle toho odkud jsem na cílovou šablonu přišel. Předpokládám, že persistentní parametr backlink mám v BasePresenteru a je tedy dostupný ve všech děděných presenterech.
Děkuji moc za případnou odpověď.
- David Matějka
- Moderator | 6445
při generování odkazu tam připoj backlink:
//presenter:
$this->template->selfLink = $this->link('this');
//latte
<a n:href="Cil:default backlink => $selfLink">Jdi na cílovou šablonu</a>
a v cilove sablone das tu hodnotu do klasickeho odkazu (bez n:href)
//presenter
$this->template->backlink = $this->backlink;
//latte
<a href="$backlink">zpet</a>
- David Matějka
- Moderator | 6445
ten můj příklad s tim počítá (jelikož na něj sahám přes this->backlink), ale nemusí to byt jediné řešení.
Krátce popíšu možnosti práce s parametry:
- pokud dám do BasePresenteru persistentní parametr, tak se bude přenášet do všech presenterů, který od něj dědí. a můžu jej jen explicitně odebrat přes backlink ⇒ null. tohle je vhodné pro parametry jako „locale“
- pokud persistetní parametr dam do konkrétního presenteru (Cil), tak se bude přenášet pouze v requestech v rámci tohoto presenteru. když přejdu na jiný presenter, jeho hodnota se ztratí.
- můžu také ten parametr uvést do actionDefault($backlink), tím bude
persistetní v rámci
this
. tedy pokud odkazuji třebathis page => $page + 1
nebo pokud odešlu formulář - pokud jej neuvedu ani mezi persistentni ani do action parametru, ale sáhnu na něj jen přes $this->getParameter(‚backlink‘), tak pokud bych udělal jakoukoliv akci na té cílové stránce (odeslaní formuláře, stránkování), tak bych o hodnotu toho parametru přišel
z toho vyplívá, ze nejvhodnější bude backlink dat jako persistentní parametr konkrétniho presenteru nebo jako actionDefault($backlink) pro persistentnost v rámci this
- gizer
- Člen | 67
Děkuji všem opravdu moc za užitečné rady.
Jednoduché a srozumitelné. První radu jsem vyzkoušel a funguje to. Nesmí se samozřejmě zapomenout nadefinovat persistentní parametr $backlink. Nejlépe někde u předka v base Presenteru. Funguje to samozřejmě i mezi moduly.
/** @persistent */
public $backlink = '';
Našel jsem tam jenom drobnou syntaktickou chybu. Chyběly tam závorky.
//latte
<a href="{$backlink}">zpet</a>
Ještě jednou děkuji a snad to bude i ostatním k užitku.