Error presenter a persistentní parametry
- hejdav
- Člen | 50
Ahoj.
Je správně, že Error presenter neakceptuje persistentní parametry?
V BasePresenteru mám něco jako:
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
/** @persistent */
public $foo = 'bar';
public function beforeRender()
{
$this->flashMessage('foo: ' . $this->foo);
}
}
Parametr foo
z URL je ovšem ignorován, když zavolám
nějakou 404 neexistující adresu.
Hodil by se mi znát i v takovémto případě (např. persistentní
parametr lang
, kvůli lokalizaci chybové hlášky).
PS: ErrorPresenter samozřejmě dědí od BasePresenteru.
Editoval hejdav (20. 11. 2014 13:08)
- hejdav
- Člen | 50
I v sandboxu od něj dědí. Tak jako tak, persistentní parametry ignoruje…
Btw měl to zřejmě řešit tenhle commit, ale evidentně to nefungfuje …
- castamir
- Člen | 629
Zkusil jsem si stáhnout aktuální nette/sandbox a přidal následující kód pro vyvolání výjimky a vykreslení flashmsg viz tvůj kód v prvním příspěvku:
// HomepagePresenter
public function actionDefault()
{
$this->error();
}
// BasePresenter
/** @persistent */
public $foo;
public function startup()
{
parent::startup();
if (!$this->foo) {
$this->foo = 'bar';
}
}
protected function beforeRender()
{
$this->flashMessage('foo: ' . $this->foo);
}
A flash msg se vypíše (a to i když smažu úpravu startup metody).
Edit: nutno dodat, že persistentní parametr musí mít nějakou hodnotu, aby se ti vůbec mělo co vypsat =)
Editoval castamir (20. 11. 2014 16:39)
- hejdav
- Člen | 50
Tenhle sice nedědí. Ale dle xdebugu se opravdu spouští tenhle ErrorPresenter.
Editoval hejdav (20. 11. 2014 21:38)