Nette Stránkování – Úprava routeru

jAkErCZ
Člen | 321
+
0
-

Zdravím Vás,

Řeším takovou věc používám Nette stránkvání

A potřebuji aby v routeru fungovalo

Což bude vypadat private-tours/2 to se mi podařilo vyřešit když manuálně za / napíšu číslo získám data z této stránky.

Ale když mám výpis stránek a kliknu na danou stránku tak odkaz vypadá

private-tours?page=2

Což při kliknutí nic neudělá jelikož aby to fungovalo musel by být odkaz právě private-tours/2

myslel sem si že když použiji v routeru nepovinný parametr [/<page=1>] tak mi to bude dělat přesně to co budu chtít ale to nejede.

 $router->addRoute('[<locale=en en|fr|ru|es|de|cs>/]private-tours[/<page=1>]', 'Tours:default');

Výpis paginatoru

   <li n:for="$i = $left; $i <= $right; $i++" n:class="'page-item',$i == $page ? active">
            {if $i == $page} {* Aktivní stránka. *}
                <span class="page-link">{$i}
                <span class="sr-only">(current)</span></span>
            {else}
                <a class="page-link" href="{$url->setQueryParameter('page', $i)->getAbsoluteUrl()}">{$i}</a>
            {/if}
        </li>

Jak tedy docílím toho co chci?

Díky za rady

David Grudl
Nette Core | 8111
+
+2
-

Proč nevytváříš odkazy takto? https://doc.nette.org/…eating-links

jAkErCZ
Člen | 321
+
0
-

David Grudl napsal(a):

Proč nevytváříš odkazy takto? https://doc.nette.org/…eating-links

Jelikož Paginator mám jako komponentu a tam kde chci stránkování tak si ho tam inicializuju a pak používám. Pokud bych tam odkazy dělal tímto způsobem bylo by to přece na pevno definovaný na nějaký presenter ne?

Martk
Člen | 652
+
+3
-

V paginatoru nastavíš persistentní parametr:

#[Persistent]
public int $page;

budeš na něho v šabloně odkazovat:

{link this page: 2}

Registruješ do presenteru:

protected function createComponentPaginator() { ... }

A v routeru nastavíš absolutní cestu k parametru $page

[<locale=en en|fr|ru|es|de|cs>/]private-tours[/<paginator-page=1>]

IMHO by to mělo být vše a mělo by to fungovat

jAkErCZ
Člen | 321
+
0
-

Martk napsal(a):

V paginatoru nastavíš persistentní parametr:

#[Persistent]
public int $page;

budeš na něho v šabloně odkazovat:

{link this page: 2}

Registruješ do presenteru:

protected function createComponentPaginator() { ... }

A v routeru nastavíš absolutní cestu k parametru $page

[<locale=en en|fr|ru|es|de|cs>/]private-tours[/<paginator-page=1>]

IMHO by to mělo být vše a mělo by to fungovat

Díky moc to je ono 👍