ifCurrent pro všechny action vyhodí vyjímku
- Patrik Votoček
- Člen | 2221
Mám v šabloně:
{ifCurrent :Options:Backend:*}...{/if}
A laděnka pořád hlásí:
InvalidLinkException
No route for Options:Backend:*(lang=en)
Nechápu proč. Tohle by podle docky fungovat mělo. Hlavně když mám
odkazy :Options:Backend:add
apod. fungujou bez nejmenších
problémů. (používám aktuální revizi z SVNka)
- _Martin_
- Generous Backer | 679
V první řadě děkuji, je to přesně kvůli tomu – s nastavením
Presenter::INVALID_LINK_WARNING
a
Presenter::INVALID_LINK_SILENT
vše funguje.
Ovšem domnívám se, že jde o broučka v Nette. Myslím si, že implementovat nějaké elegantní systémové řešení (které rozliší mezi požadavkem kvůli ověření flagu current a požadavkem kvůli vytvoření odkazu) by bylo velice složité. Navrhuji tedy upravit makro filtru LatteMacros následovně:
'ifCurrent' => '<?php try {%:macroIfCurrent%;} catch (Exception $e) {} if ($presenter->getLastCreatedRequestFlag("current")): ?>',
Uznávám, že tím přijdeme o zobrazení chybové hlášky v případě,
že bychom do podmínky zadali neexistující presenter. Ovšem to při
použití jakéhokoliv Presenter::INVALID_LINK_*
– takže se
tím nic nemění, akorát můžeme používat i vyhazování výjimek při
nefunkčních odkazech.