Chybová stránka se míchá s předešlým obsahem
- Beret
- Člen | 3
Zdravím, na produkčním serveru se mi stává, dojde-li k chybě uvnitř
šablony, že se obsah chybové stránky
app/templates/Error/500.latte
vloží na dané místo ve stránce a
ponechá v ní veškerý předešlý obsah, kterému se tím rozbije CSS a
validita.
Mohu nějak zařídit, aby se v případě chyby veškerý dosavadní výstup smazal, někam zalogoval a uživateli se prezentovala čistá chybová stránka?
Nette verze 2.0.3
PHP verze 5.4.4
- llsm
- Člen | 121
Svůj kód bys měl opravit tak, aby připadná chyba nevznikala v šabloně, ale už v presenteru kde předáváš data šabloně, kde ji lze jednoduše odchytit. Tím se zbavíš svého problému nejjednodušeji. To, co požaduješ ty podle mě není možné. Šablona vloží na dané místo chybovou hlášku, protože už se vykresluje a v tu chvili už neumí jednoduše zahodit co už vykreslila…
- jtousek
- Člen | 951
@Beret:
class BasePresenter extends Nette\Application\UI\Presenter
{
public function beforeRender()
{
ob_start();
}
public function afterRender()
{
ob_end_flush();
}
}
Ještě bys musel otestovat jak to bude fungovat, tohle odchytí nejspíše i tu chybovou stránku, což bys musel ošetřit. Nejspíš tak že bys zachytil tu chybu a ještě než bys vykreslil tu chybovou stránku bys zavolal ob_end_clean().
@Ot@s: Tohle mě napadlo taky, problém je že vykreslování stránky se může zastavit v jakymkoli kontextu, např. nebudeš mít uzavřenej nějakej HTML atribut atd. Takže by se ještě před to musel strčit kód který používá laděnka pro ošetření těchto případů.
Editoval jtousek (11. 7. 2012 14:14)