ErrorPresenter – neprojevují se změny v .latte

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

Zdravím, snažím se upravit .latte ale změny se neprojevují. Temp->cache mažu. Už jsem pár vláken prošel ale nic z toho co se zde řešilo mi nefunguje.

Template

{block content}
<h1 n:block=title>Stránka neexistuje</h1>

<p>Stránka, kterou hledáte nebyla nalezena. </p>

<p><small>error 404</small></p>

config.neon

php:
	date.timezone: Europe/Prague


nette:
	application:
		catchExceptions: true
		mapping:
			*: App\*Module\Presenters\*Presenter

	session:
		expiration: 14 days

	database:
			dsn:        "mysql:host=127.0.0.1;dbname="
			user:
			password:
			options:    [PDO::MYSQL_ATTR_COMPRESS = true]
			debugger:   true
			explain:    true
			reflection: discovered
			autowired:  true

services:
	- App\Model\UserManager
	- App\RouterFactory
	- App\Model\Model
	router: @App\RouterFactory::createRouter

extensions:
	translation: Kdyby\Translation\DI\TranslationExtension

translation:
	default: cs
	whitelist: [cs, en, ru]
	fallback: [cs_CZ, cs]

Bootstrap

require __DIR__ . '/../vendor/autoload.php';

$configurator = new Nette\Configurator;

//$configurator->setDebugMode('TRUE');  // debug mode MUST NOT be enabled on production server
$configurator->enableDebugger(__DIR__ . '/../log');

$configurator->setTempDirectory(__DIR__ . '/../temp');

$configurator->createRobotLoader()
	->addDirectory(__DIR__)
	->addDirectory(__DIR__ . '/../vendor/others')
	->register();

$configurator->addConfig(__DIR__ . '/config/config.neon');
$configurator->addConfig(__DIR__ . '/config/config.local.neon');

$container = $configurator->createContainer();

return $container;

ErrorPresenter

namespace App\Presenters;

use Nette,
	App\Model,
	Nette\Diagnostics\Debugger;


/**
 * Error presenter.
 */
class ErrorPresenter extends BasePresenter
{

	/**
	 * @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
			Debugger::log("HTTP code $code: {$exception->getMessage()} in {$exception->getFile()}:{$exception->getLine()}", 'access');

		} else {
			$this->setView('500'); // load template 500.latte
			Debugger::log($exception, Debugger::ERROR); // and log exception
		}

		if ($this->isAjax()) { // AJAX request? Note this error in payload.
			$this->payload->error = TRUE;
			$this->terminate();
		}
	}

}

Editoval David Krupička (13. 8. 2015 11:34)

David Matějka
Moderator | 6445
+
0
-

nemas errorPresenter nastaveny

David Krupička
Člen | 45
+
0
-

Když jsem tam měl tento řádek, tak mi místo 404 vyhazoval 500.

Jan Mikeš
Člen | 771
+
+2
-

A co bylo obsahem 500?

Over si toto (nejbeznejsi chyby u error presenteru):

  • chybny namespace error presenteru
  • tvuj error presenter dedi basepresenter kteremu se neco nelibi
  • tva error sablona ma nastaven layout, ve kterem vypisujes hodnoty ktere se plni v base presenteru ale tvuj error presenter neextenduje basepresenter

apod…

Editoval Lexi (13. 8. 2015 12:31)

David Krupička
Člen | 45
+
0
-

Nejde o to co bylo obsahem 500, ale tam kde se má vypisovat 404 když stránka neexistuje, tak se vypisovala chyba 500 a to je špatně. Každopádně díky za reakce, ty chyby jsem si ověřoval ale ani jedna není přičinou.

A nechápu jednu věc, když nemám nastavený EP v bootstrapu ani v configu, jaktože se zobrazuje vůbec nějaká šalbona EP?

David Matějka
Moderator | 6445
+
+2
-

Nejde o to co bylo obsahem 500, ale tam kde se má vypisovat 404 když stránka neexistuje, tak se vypisovala chyba 500 a to je špatně.

o to prave jde, jelikoz ta chyba pravdepodobne vyskocila, jelikoz doslo k chybe pri zobrazovani 404 (z duvodu, jak pise @Lexi a dalsich..)

jaktože se zobrazuje vůbec nějaká šalbona EP?

nette ma defaultni

David Krupička
Člen | 45
+
0
-

Pochopil jsem špatně to s tím obsahem, myslel jsem obsah templatu 500. Chyba byla v tom, že při překladech nebyla na neexistující stránce definovaná proměnná locale. Stačilo ji doplnit do BP, EP byl v pořádku. Díky za pomoc!