Na produkci nevyvolá 404 ale 500
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Lazius
- Člen | 9
V debug modu je chyba Nette\Application\BadRequestException #404, ale na produkci i na localu (s catchExceptions: true v configu) mi to vyvolá RuntimeException Cannot include undefined block ‚moduleLayout‘ (error 500). Takže bych samozřejmě potřeboval, aby při neexistující url zobrazilo mojí chybovou stránku.
Mám dva moduly Admin a Front a error presenter je nad těmito moduly.
-App
-Modules
'--Admin
'--Presenters
'--Front
'--Presenters
-Presenters
'---ErrorPresenter.php
- David Matějka
- Moderator | 6445
mas asi chybu v error presenteru, respektive v jeho sablone. ukaz prosim tu sablonu
- Lazius
- Člen | 9
Toto? Nebo přímo šablonu té chyby?
<?php
namespace App\Presenters;
use Nette,
App\Model,
Tracy\ILogger;
/**
* Error presenter.
*/
class ErrorPresenter extends BasePresenter
{
/** @var ILogger */
private $logger;
public function __construct(ILogger $logger)
{
$this->logger = $logger;
}
/**
* @param Exception
* @return void
*/
public function renderDefault($exception)
{
if ($exception instanceof Nette\Application\BadRequestException) {
$code = $exception->getCode();
// load template 403.latte or 404.latte or ... 4xx.latte
$this->setView(in_array($code, array(403, 404, 405, 410, 500)) ? $code : '4xx');
// log to access.log
$this->logger->log("HTTP code $code: {$exception->getMessage()} in {$exception->getFile()}:{$exception->getLine()}", 'access');
} else {
$this->setView('500'); // load template 500.latte
$this->logger->log($exception, ILogger::EXCEPTION); // and log exception
}
if ($this->isAjax()) { // AJAX request? Note this error in payload.
$this->payload->error = TRUE;
$this->terminate();
}
}
}
?>