Error presenter a link na „this“ v layout.latte
- hejdav
- Člen | 50
Čau,
řešil jste někdo link odkazjící na this
v layoutu, tzn. na
každé stránce webu? Problém nastane při renderování ErrorPresenteru
(např. při 404).
Mám v layoutu třeba přepínání jazyka, takže
n:href="this, lang => en"
. Rád bych to tam měl třeba i na
té 404 stránce. Jenže problém je, že error presenter do
„this
“ předá všechny své parametry,
včetně $exception
. Odkaz pak vypadá nějak
takhle:
Setkal jste se s tím už někdo? Ď, Vláďa
(sandbox commit 6ba6a4c)
- Filip Klimeš
- Nette Blogger | 156
Ahoj,
pokud používáš ErrorPresenter, který je přibalený v sandboxu, potřebuješ znát typ chyby, abys zobrazil správnou chybovou hlášku.
Když nastane výjimka při normálním běhu a „probublá“ celou aplikací nahoru (nikde jí nechytíš), Nette zavolá ErrorPresenter a předá mu ji interně. Protože PHP je bezestavové, v dalším requestu už neví, co se stalo za chybu, a musí ji předat pomocí GET parametru. Pokud je tedy potřeba zobrazit chybovou hlášku v jiném jazyce, musí se vygenerovat takovýhle nehezký odkaz, který ale ničemu nevadí.
Pokud Ti to vadí, můžeš si vytvořit speciální akce v ErrorPresenteru a přesměrovávat na ně.
{ifCurrent Error:default}
<a n:href="Error, lang => en, code => $code">...</a> {* proměnnou $code si předáš do šablony z ErrorPresenteru *}
{else}
<a n:href="this, lang => en">...</a>
{/ifCurrent}
Editoval Filip Klimeš (4. 5. 2015 15:35)