Zobrazování chyb, produkční mód, redscreen

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

Zdravím

zde je můj problém: nastavil jsem si vlastní renderování různých chyb na určité typy Exceptionů v ErrorPresenteru – do něj se exception ovšem dostane pouze ve chvíli, kdy je v aplikaci catchExceptions = true. A v téhle chvíli, není možné zobrazit redscreen ani v případě, že je vaše IP adresa povolena v Debuggeru a Debugger je v módu Debugger::DEBUG.
Ve chvíli, kdy zapnu Debugger do módu Debugger::PRODUCTION popřípadě nechám na Debugger::DETECT, aplikace ErrorPresenter ignoruje a zobrazuje chyby po svém, redscreen ovšem uvidím.

Potřeboval bych vidět redscreen při chybě, pokud je má IP adresa nastavená na debug mód a pro ostatní bych chtěl použít zobrazení vlastních chyb přes ErrorPresenter. Jak na to? :)

Díky,
TheKronnY

David Matějka
Moderator | 6445
+
+1
-

Smazal si cache?

Jinak je taky mozne, ze pokud v produkcnim rezimu ignoruje errorPresenter a zobrazuje chyby „po svem“, tak mozna v tvem error presenteru doslo k chybe. koukni do slozky log

TheKronnY
Člen | 22
+
0
-

Ahh, pravda.

[2016-01-17 23-38-11] Nette\MemberAccessException: Cannot write to an undeclared property App\ErrorPresenter::$factory. in /var/www/.../public_html/vendor/nette/utils/src/Utils/ObjectMixin.php:209  @  ...  @@  exception--2016-01-17--20-09--8cd751c500.html

Do ErrorPresenteru se chtěly injectovat služby, pro které tam nebyla proměnná, tudíž jsem ani nečekal že by se tam chtěly injectovat, vzhledem k tomu, že ErrorPresenter extenduje Nette\Application\UI\Presenter a ne BasePresenter, ve kterém jsou:

/** @var Translator @inject */
public $translator;

/** @var Model\Site @inject */
public $site;

/** @var Model\Config @inject */
public $config;

/** @var FormFactory @inject */
public $factory;

/** @var string @persistent */
public $lang;

Dík za tip.

Editoval TheKronnY (17. 1. 2016 23:51)