Na produkci nevyvolá 404 ale 500

před 2 lety

Lazius
Člen | 9
+
0
-

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

před 2 lety

David Matějka
Moderator | 6031
+
0
-

mas asi chybu v error presenteru, respektive v jeho sablone. ukaz prosim tu sablonu

před 2 lety

Lazius
Člen | 9
+
0
-

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();
		}
	}

}
?>