Zistenie parametru este pred volanim akcie v presenteri

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

Zdravim,

viem nejak zistit parameter akcie este pred samotnym volanim akcie presenteru renderNazov($parameter) ? Napr. v startup-e , alebo inym sposobom?

dakujem

David Matějka
Moderator | 6445
+
+2
-

$this->getParameter('parameter')

marioff
Člen | 69
+
0
-

ja som skusal bez parametru a vyhadzovalo mi to ako User Deprecated tak som to dalej neriesil, ale s parametrom to ide v pohode.. je to tak teda spravne?

David Matějka
Moderator | 6445
+
+3
-

Myslim, ze ta zprava u User Deprecated hlasky mluvi jasne:

Calling getParameter() with no arguments to get all parameters is deprecated, use getParameters() instead.

getParameter() bez argumentu podporovalo vraceni pole vsech parametru – k tomu mas pouzit nyni getParameters(). Pro jeden parametr pouzij getParameter($nazev)

marioff
Člen | 69
+
0
-

mas pravdu, asi som to prehliadol, dakujem velmi pekne..

este sa opitam, ak mozem, ci uvazujem spravne.. mam presenter ktory chcem pouzivat na webe viackrat (napr. pre informacie ale aj pre napovedu, pripadne neskor pre ine ucely) s rovnakou sablonou a

router mam takto:

		$router[] = new Route('napoveda[/<url>]', array(
			'module' => 'Frontend',
			'presenter' => 'Help',
			'action' => 'default',
			'url' => array(Route::PATTERN => '.*',))
  );

$router[] = new Route('info[/<url>]', array(
			'module' => 'Frontend',
			'presenter' => 'Help',
			'action' => 'info',
			'url' => array(Route::PATTERN => '.*',))
  );

a podla akcie viem ktore data sa zobrazia

function renderDefault() {
	$this->render();
}

function renderInfo() {
	$this->render();
}

function render() {
	nastavi sa sablona
	tu sa ziskaju data podla akcie a vlozia do sablony
}

uvazujem spravne alebo sa to da elegantnejsie vyriesit?

David Matějka
Moderator | 6445
+
0
-

tu sa ziskaju data podla akcie a vlozia do sablony

bude lepsi, kdyz to budes ziskavat v konkretni renderDefault, resp. renderInfo

a mozna se ti hodi metoda afterRender – ta se vola po vsech render* metodach, takze:

function renderDefault($url)
{
	vyber_pro_default($url);
}

function renderInfo($url)
{
	vyber_pro_info($url);
}

function afterRender()
{
	udelej_spolecne_veci();
}
David Kudera
Člen | 455
+
0
-

Jinak kdyby jsi chtěl jenom přenastavit šablonu např. na akci info z jakékoliv jiné, tak to jde takhle:

$this->setView('info');
marioff
Člen | 69
+
0
-

dakujem, vecer sa s tym pohram ;)