Zajímavé chování isLinkCurrent
- uestla
- Backer | 799
Zdravím.
Narazil jsem na zajímavé chování metody PresenterComponent::isLinkCurrent().
Sice se tváří, že přijimá jak destinaci, tak volitelně i parametry requestu, ale jak se zdá, tak s nimi nijak nenakládá, neboť ve výsledku se stejně jen testuje jméno presenteru a akce (resp. pak ještě signál, je-li nějaký).
Kvůli tomuto jsem byl nucen použít následující obezličku, abych dosáhl požadovaného:
$test = 'Homepage:default?param=value#anchor';
$tmp = explode('#', $dest); # fragment
$parts = explode('?', $tmp[0]); # parameters
if (isset($parts[1])) {
parse_str($parts[1], $parts[1]);
} else {
$parts[1] = array();
}
$path = $presenter->context->httpRequest->getUrl()->getPath();
$isCurrent = $presenter->link($parts[0], $parts[1]) === $path;
Nicméně bych čekal, že bude stačit
$isCurrent = $presenter->isLinkCurrent($test);
když už je možno cílovou akci uvádět v jednom řetězci spolu s parametry, např.
$this->redirect('Homepage:default?param1=val1¶m2=val2');
Všiml jsem si TODO
v komentáři v odkazovaném zdrojáku,
ale nedělám něco špatně?
Děkuji.
- MelkorNemesis
- Člen | 36
Staci si projit api – https://api.nette.org/…ent.php.html#361.
parametry se davaji do pole druheho argumentu
- uestla
- Backer | 799
Oops… Oči mi již dosluhují, omlouvám se.
V tom případě nechápu následující:
// aktuální destinace = Homepage:default?par=val
$presenter->isLinkCurrent('Homepage:default', array()); // TRUE
Resp. chápu, že se neexistence parametru předaného v isLinkCurrent() nebere jako fatální pro určení, že není current… Ale je to tak dobře?
Editoval uestla (11. 3. 2012 13:57)