isLinkCurrent se seznamem možných akcí?

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

Ahoj, potřeboval bych v isLinkCurrent() vypsat možné akce.

Představoval bych si něco jako

$this->presenter->isLinkCurrent('Presenter:action1|action2|actionN', array($id));

Ve všech akcích pracuji se stejným $id, jde mi jen o rozlišení akcí.
Jediný co mě napadá, je vypsat si to postupně.. To znamená

$this->presenter->isLinkCurrent('Presenter:action1', array($id));
$this->presenter->isLinkCurrent('Presenter:action2', array($id));

Ale toje hodně nepraktický vzhledem k počtu akcí.
Ve všech akcích pracuji se stejným $id, jde mi jen o rozlišení akcí.

Nevíte o nějakém jednodušším řešení? Díky

22
Člen | 1478
+
0
-

mohlo by fungovat…

$this->presenter->isLinkCurrent('Presenter:*', array($id));
Marek Šneberger
Člen | 130
+
0
-

@**22** Bohužel, vrací pořád FALSE

22
Člen | 1478
+
0
-

hm.. je tam chyba, zkus tohle

$this->presenter->isLinkCurrent('Presenter:*', array('id' => $id));
Marek Šneberger
Člen | 130
+
0
-

@**22** Super toje ono! Velice ti děkuji.

jtousek
Člen | 951
+
0
-

Když už tady vidím to téma, mám v Latte tohle:

<a n:class="$presenter->isLinkCurrent('Client:*') ? active" ...>

Laděnka ale kdovíproč hlásí chybu „No route for Admin:Client:*()“. Tuší někdo čím to může být?

22
Člen | 1478
+
0
-
<a n:class="$presenter->isLinkCurrent(':Admin:Client:*') ? active" ...>

co takhle?

enumag
Člen | 2118
+
0
-

Stejná chyba…

22
Člen | 1478
+
0
-

Zkoušel jsem teď na jednom FrontModule a mi to funguje správně.. problém bude někde ve tvých routách imho

enumag
Člen | 2118
+
0
-

Routa je velmi primitivní, tam by nic vadit nemělo:

$container = $configurator->createContainer();

// Check SSL for Admin
$secured = (function_exists('apache_get_modules') && in_array('mod_ssl', apache_get_modules())) ? Route::SECURED : 0;

$container->router[] = $adminRouter = new RouteList('Admin');
$adminRouter[] = new Route('admin', 'Homepage:default');
$adminRouter[] = new Route('admin/<presenter>/<action>[/<entity>]', 'Homepage:default', $secured);

EDIT: Co používáš za verzi Nette? Já používám master z githubu, navíc s vlastními úpravami (které ale s tímto naprosto nesouvisí).

EDIT2: Nefunguje mi to ani na front modulu.

Editoval enumag (11. 10. 2012 9:57)

22
Člen | 1478
+
0
-

2.1 dev..
zkus to na čistým snadboxu, co to bude dělat.

enumag
Člen | 2118
+
0
-

Tomu sandboxu jsem se chtěl právě vyhnout. :-)

No každopádně jsem to na tom sandboxu vyzkoušel a funguje to. A už jsem i zjistil proč:

Metoda isLinkCurrent volá metodu link, která vrací URL adresu. V případě hvězdičky tvorba odkazu samozřejmě selže, což ale ničemu nevadí, protože URL není potřeba. Problém nastane v případě použití $presenter->invalidLinkMode = $presenter::INVALID_LINK_EXCEPTION;, což je můj případ. V tomto případě totiž neúspěšné vytvoření URL způsobí vyhození výjimky.