ErrorPresenter – neprojevují se změny v .latte
- David Krupička
- Člen | 45
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)
- Jan Mikeš
- Člen | 771
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
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
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
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!