Nefungující translator při volání errorPresenteru
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- mordare
- Začátečník | 117
Zdravím snažím se rozjet Error presenter, ale vždy když mi web spadne do
chybové hlášky (např 404) tak místo toho vyskočí Defaultní chybové
hlášení 500, které se načte přímo z Tracy a né z error presenteru.
Když jsem si v Neonu nastavil catchExceptions: yes
tak už se mi
vykreslí šablona 404 z errorPresenteru, Ale zároveň s chybovým
hlášením laděnky
Call to undefined method Latte\Template::translate()
. (Kvůli tomu
to asi přesměrovává na tu 500.) Ale mě spíš zajímá proč mi to padá na
překladači, když translator normálně nastavuju a do šablon posílám.
Používám Nette 2.2
BasePresenter:
public function __construct(Nette\Database\context $database,Model\UserManager $userManager){
$this->userManager = $userManager;
$this->videos = new Model\PzVideo($database);
$this->database = $database;
}
public function startup() {
parent::startup();
$this->pzCache = new Cache($this->storage);
$this->translator = new \App\Model\MyTranslator($this->database, $this->pzCache);
$this->tagsModel = new Model\PzTags($this->database, $this->pzCache);
}
ErrorPresenter je základní z nette:
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::EXCEPTION); // and log exception
}
if ($this->isAjax()) { // AJAX request? Note this error in payload.
$this->payload->error = TRUE;
$this->terminate();
}
}
Editoval mordare (29. 4. 2015 12:09)