Laděnka samostatně – nastavení chybové stránky

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
i.magine
Člen | 81
+
0
-

Zdravím,
mám nainstalovanou laděnku samostatně, chyby v pořádku zachytává a loguje je, ale jak nastavím chybovou stránku? V Nette bych to řešil Error presenterem, ale tady?

frosty22
Člen | 373
+
0
-

Na chybovou stránku v nette nepřesměrovává laděnka nýbrž, Nette/Application, které zachytí vyjímku a přesměruje tam, čili v podstatě si musíš toto zařídit sám nějak, asi takto:

<?php
// přepíní produkčního/vývojového
$production = true;

// Nastavení laděnky
Debugger::enabled($production ? Debugger::PRODUCTION, Debugger::DEVELOPMENT);

// Nastavení callbacků při fatal error, nezachycené vyjímce,
if ($production) {
   register_shutdown_function(function(){ echo "Ups, spadlo nám to fatalem"; });
   set_exception_handler(function(){ echo "Nezachycená vyjímka"; });
}

?>
Filip Procházka
Moderator | 4668
+
0
-

exception_handler si registruje Debugger, čili velice špatný nápad ;)

V Application je úplně celý běh presenteru, rout atd obalen do

try {
	// úplně všechno
} catch (Exception $e) { }

a pak se v catch rozhoduje podle $application->catchExceptions jestli výjimku podusí a zobrazí ErrorPresenter, nebo ji znovu vyhodí a postará se o ni Debugger, který buď zobrazí laděnku, nebo je potichounku, když je na produkci.