(ne)Načítání proměnné v ErrorPresenteru z BasePresenteru

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

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
+
0
-

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
+
0
-

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
+
+3
-
  1. dej pozor na dedeni BasePresenteru v ErrorPresenteru, co kdyby doslo k one chybe prave v base presenteru? :)
  2. 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
+
0
-

Ř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.

castamir
Člen | 629
+
0
-

nastav si jazyk na výchozí hodnotu a máš to

Editoval castamir (24. 6. 2014 16:39)

FJP
Člen | 124
+
0
-

Jde o to, že když se na tu 404ku dostane někdo v USA, tak bych mu dal rád info anglicky. Pro Čecha česky (je to mezinárodní web).

FJP
Člen | 124
+
0
-

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.