Link s default hodnotami u persistentních parametrů

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

Ahoj,

je v Nette 0.9.2 nějaká možnost jak vytvořit link uvnitř presenteru, který má nějaké persistentní parametry, na ten samý presenter, ale tak aby se do něj tyto parametry nepromítly? Koukal jsem do kodu a nic jsem tam neviděl :(.. Presenter má docela hodně parametrů a tak psát link se všemy parametry s nějakou defaultní hodnotou (která se v presenteru může časem změnit a pak hledat v jakých linkách to jještě je) hodně zběsilí.. :)

Díky

DocX
Člen | 154
+
0
-

Zatim mě napadlo přetížit funkci link v BasePresenteru takhle:

<?php
function link($destination, $args)
{
	if (isset($args[0]) && $args[0] == 'nopersist')
	{
		$persist = static::getPersistentParams();
		foreach($persist as $param)
		{
			$args[$param] = null;
		}
		unset($args[0]);
	}

	return parent::link($destination, $args);
}
?>

a použít speciální parametr takto:

<?php
	$this->link('PresenterWithPersistentParams', array(0 => 'nopersist'));
?>

Problém asi bude, když budu chtít nějaké parametry vynulovat a nějaké jiné ponechat nebo zadat.. Zatím mi to ale takhle stačí :)

Jan Tvrdík
Nette guru | 2595
+
0
-

Nepomůže explicitně předat jako hodnotu parametru NULL?

DocX
Člen | 154
+
0
-

Jan Tvrdík napsal(a):

Nepomůže explicitně předat jako hodnotu parametru NULL?

Ne, to hlásí „extra parameter for signal …“. Co jsem koukal do Nette\Application\PresenterComponent, tak tam je do parametru napevno propagován globalState, který je brán také z persistentParams.. Tim že předám všechny persistentní parametry null, tak ten globalState zmenim..

To co jsem chtěl jsem si udělal.. Otázka je jestli to například požadovat jako feature, ktera by mela byt primo v nette, nebo jestli to nechat na kazdem, jako jsem to udelal ja.