(ne)Načítání proměnné v ErrorPresenteru z BasePresenteru
- FJP
- Člen | 124
Ahoj,
v BasePresenter mám:
function startup()
{
parent::startup();
$this->template->language = $this->language = $this->getParam('language');
$this->template->country = $this->country = $this->getParam('country');
...
}
Když dám dump($this->country); v HomepagePresenteru, NewsPresenteru etc. tak mi to jede, jak má (tzn. když je v url ‚cs‘, tak to vypíše ‚cs‘; když je v url ‚ru‘, tak to vypíše ‚ru‘ a tak dále). Ale když dumpuju v ErrorPresenteru nebo vypisuju v jeho šabloně, vypisuje se mi stále jen ‚cs‘.
Nevítě někdo, kde by mohl být zakopaný pes? Díky ;)
- FJP
- Člen | 124
PS:
class ErrorPresenter extends BasePresenter
{
protected function beforeRender()
{
parent::beforeRender();
$this->setLayout('layoutError');
$this->language = $this->getParam('language');
$this->country = $this->getParam('country');
}
public function renderDefault($exception)
{
dump($this->language);die;
...
}
}
Nevypíše nic.
- MartinitCZ
- Člen | 580
Nejsem si jist řešením problému, ale mám pro tebe úpravu kodu :)
Správně bys měl mít:
function startup()
{
parent::startup();
$this->language = $this->getParam('language'); // Lepší bude $this->getParameter('language'), toto je deprecated.
$this->country = $this->getParam('country');
}
function beforeRender()
{
parent::beforeRender();
$this->template->language = $this->language;
$this->template->country = $this->country;
}
Nicméně co ti vypíše dump($this->getParam('country'));
v ErrorPresenter
EDIT: Nastavovat proměnné máš v startup() a předávat do $this->template v beforeRender()!! Bacha na to.
Editoval martinit (23. 6. 2014 15:02)
- David Matějka
- Moderator | 6445
- dej pozor na dedeni BasePresenteru v ErrorPresenteru, co kdyby doslo k one chybe prave v base presenteru? :)
- ty parametry se tam nepredavaji primo, do error presenteru se dostane pouze „exception“ a taky „request“ – v nem najdes posledni request (ten, ktery selhal) vcetne jeho parametru – tedy vcetne language
Editoval matej21 (23. 6. 2014 15:38)
- FJP
- Člen | 124
Řeším totiž, jak vypisovat různou lokalizaci 404.
Nakonec mi došlo, že na 404 se člověk může dostat i bez detekce jazyka www.domena.cz/nesmysl (místo www.domena.cz/cz/nesmysl), takže je to ve finále jedno. Co myslíte, bylo by lepší použít k definici jazyka zemi dle GeoIP nebo nastavení prohlížeče?
Díky.
- FJP
- Člen | 124
matej21 napsal(a):
2. ty parametry se tam nepredavaji primo, do error presenteru se dostane pouze „exception“ a taky „request“
a je normalni stav, když si dumpnu exception, že mi to hodi jen bílou obrazovku? … request se mi nepodařilo vypsat, to by bylo úplně fajn. Prosím o help, díky za pomoc.