ErrorPresenter se nenačte při chybě na komponentě
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Tomáš Jablonický
- Člen | 115
Zdar chlapci,
řeším tu jeden problém kdy když se vyskytne Exception nebo chyba na komponentě (dědná třída je \Nette\Application\UI\Control) tak nevyskočí můj ErrorPresenter ale ten od Nette. Vzhledem k tomu, že je celá aplikace stavěná jen na 3 presenterech a zbytek jsou již komponenty, je toto závažný problém.
V neonu:
application:
errorPresenter: Front:Error
mapping:
*: *Module*Presenter
ErroPresenter
<?php
namespace FrontModule;
class ErrorPresenter extends BasePresenter
{
/**
* @param Exception
* @return void
*/
public function renderDefault($exception)
{
$code = $exception->getCode();
if ($exception instanceof \Nette\Application\BadRequestException) {
\Nette\Diagnostics\Debugger::log("HTTP code $code: {$exception->getMessage()} in {$exception->getFile()}:{$exception->getLine()}", 'access');
} else {
\Nette\Diagnostics\Debugger::log($exception, \Nette\Diagnostics\Logger::ERROR);
}
if ($this->name!=='Front:Accident')
$this->redirect('Accident:default');
}
}
?>
Chyba v komponentě je nasymulovaná za pomoci překlepu v inject.