Jak nejlepe osetrit Missing template?

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

Ahoj vsem,

vytvarim s pomoci nette staticke stranky. Existuje @layout a pak sablony pro jednotlive stranky .. potud vse OK. Je jsem zatim neprisel na nejaky elegantni zpusob, jak osetrit stav, kdy se napr. v URL odkazu na neexistujici sablonu?

Jak toto nejlepe osetrit?

Diky za radu.

Jan Tvrdík
Nette guru | 2595
+
0
-

Přesně k tomu by měl sloužit error presenter.

ras
Člen | 135
+
0
-

Mohu poprosit o neco konkretnejsi odpoved, resp. byl by mozny drobny priklad?

smasty
Člen | 90
+
0
-

@ras: Príklad máš priamo v sandboxe v distribúcii. Je tam ErrorPresenter aj s príslušnými šablónami.

Potom už len na produkčnom serveri stačí nastaviť v bootstrape

$application->errorPresenter = 'Error';
$application->catchExceptions = TRUE;

Od tej chvíle budú všetky Exceptions odchytené a predané ErrorPresenter-u.

Editoval smasty (25. 8. 2011 17:18)

ras
Člen | 135
+
0
-

@smasty: diky → bootstrap upraven, ErrorPresenter bez uprav pouzit ten ze sandboxu → zmena = zasekl jsem se na tomto

UnexpectedValueException
DirectoryIterator::__construct(c:\web\test\web/../web_app/../log): failed to open dir: No such file or directory

Pricemz:

  • c:\web\test\web = DocumentRoot
  • c:\web\test\web_app = APP adresar
  • c:\web\test\web_log = LOG adresar

→ tj. proc mi to hlasi cestu na LOG misto na WEB_LOG

V index.html mam (mimo jine):

define('WWW_DIR', __DIR__);
define('APP_DIR', WWW_DIR . '/../web_app');
define('LOGS_DIR', WWW_DIR . '/../web_log');

(Nette Framework 2.0-beta (revision d5b50dc released on 2011–06–03)

Nebo jsem neco nepochopil?

uestla
Backer | 799
+
0
-

Ta otázka by měla být spíše „Co tu výjimku vyhazuje, že se to snaží přistoupit k log a ne k web_log?“

22
Člen | 1478
+
0
-

tipl bych, že to bude Debugger a co vím, tak log dir pro Debugger se nastavuje takto:

Debugger::$logDirectory = __DIR__ . '/../log';
ras
Člen | 135
+
0
-

@22: jo, to presne pomohlo, diky moc

Jen tak filozoficky … proc je explicitne nutne to takto nastavit, kdyz definuji LOGS_DIR. Chapu, ze takto je to variabilni a clovek si muze nastavit cokoliv …, ale, nevim zda jen ja, cekal bych jine defaultni chovani.

Filip Procházka
Moderator | 4668
+
0
-

Prostě se to změnilo. Debugger dříve využíval konstantu, nyní na ni kašle.