Link s default hodnotami u persistentních parametrů
- DocX
- Člen | 154
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
Zatim mě napadlo přetížit funkci link
v
BasePresenter
u 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čí :)
- DocX
- Člen | 154
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.