Paginator – na poslední stránku
- Proloo
- Člen | 24
Zdravím, řeším teď fórum a zasekl jsem se na následujícím
problému.
Potřebuju k výpisu témat přidat možnost jít rovnou na poslední
stránku.
V API jsem bohužel nenašel metodu, která by dokázala paginator přesměrovat rovnou na poslední na poslední stránku, tak jsem to chtěl vyřešit předáním druhýho parametru v URL. A tak vzniklo toto:
public function renderTopic($id,$where) {
....
if ($where == 'last') {
$paginator->setPage($paginator->getLastPage());
....
}
Což udělá to co má (nahodí poslední stránku), akorát že ten parametr
where potom zůstane v URL a tudíž nefunguje další stránkování
:)
Chci se tedy zeptat jak na to? Nejlíp by se mi hodilo, kdybych mohl ten
parametr v URL po použítí nějak odstranit, bohužel mě nenepadá jak na
to.
Nebo máte někdo nějaký jiný řešení?
- Proloo
- Člen | 24
No aktuální stránka právě není. Možná jsem to napsal blbě.
Ve výpisu témat potřebuju u každýho tématu přidat možnost jít rovnou
na konec příspěvků v tom tématu (tedy na poslední stránku
v paginatoru). V tom výpisu témat samozřejmě ještě nevím jaká je
poslední stránka v každém tématu a přesto se na tu stránku chci
z tohoto tématu dostat.
Jinak si číslo stránky samozřejmě uchovávám normálně v
?paginator-page=2
A bohužel do tohoto parametru nemůžu zadat text (last třeba a potom v presenteru vyhodnotit a nastavit poslední stránku), můžu tam zadat jen čísla.
Nebo jak jinak se to dá udělat? Například tak jak je to tady na
fóru.
Aniž bych musel u každýho tématu v kategorii chodit do databáze,
počítat příspěvky, dělit,…
Editoval Proloo (13. 6. 2012 22:02)
- llook
- Člen | 407
To, co radí uestla, je abys v šabloně z objektu stránkovače získal číslo poslední stránky a to použil pro tvorbu odkazu:
<a n:href="this paginator-page => $paginator->lastPage">Poslední stránka</a>
Pokud chceš, aby existovalo jedno URL, na kterém vždy najdeš poslední stránku (jako „nejnovější příspěvky“ na tomto fóru), tak můžeš jít cestou signálu:
public function handleGoToLastPage()
{
$this->paginator->page = $this->paginator->lastPage;
}
<a n:href="goToLastPage!">Poslední stránka</a>
- Proloo
- Člen | 24
Možná že vás oba nechápu, nebo nechápete to co potřebuju. Ale obě
dvě možnosti jsou použitelné pouze na tom výpisu příspěvků – tam
budu mít stránkovač a můžu s ním nějak pracovat. Stejně tak tam můžu
použít ten signál.
Jenže já se na tu poslední stránku ve výpisu příspěvků potřebuju
dostat přímo z výpisu témat.
Jednoduše řečeno – když to zjednoduším a trochu změním, potřebuju
abych měl ve výpisu témat jako je zde – https://forum.nette.org/…-dokumentace
Možnost jít rovnou na jednotlivé stránky, nebo i klidně jen na tu
poslední (to tučně): Nový Quickstart – diskuze od Panda [ 1
2 ]
A to bez toho, aniž bych musel ve výpisu těch témat počítat počty příspěvků ve všech těch tématech. Proto mluvím od začátku o tom dostat se rovnou na poslední stránku, to by mi uplně stačilo, jenže nemůžu přijít na způsob jak – protože pokud to dělám druhým parametrem v URL (první je ID toho tématu), tak ten parametr v té URL zůstane a tudíž nejde potom stránkovat v tom tématu.
Editoval Proloo (14. 6. 2012 11:18)
- Proloo
- Člen | 24
Dobrá a lze tedy nějakým způsobem udělat, abych jen mohl jednoduše
přejít rovnou na tu poslední stránku nějaký parametrem navíc (to není
problém, to mám a je to docela jednoduchý)?
A poté tento parametr zrušit (to už je problém a ať dělám co dělám,
nevím jak na to)?
Zkoušel jsem nějakým způsobem upravit template.phtml
u VisualPaginatoru.
Mám tam tohle:
<a href="{link this, 'page' => $paginator->page - 1}">« Předchozí</a>
Když to upravím takhle:
<a href="{link this, 'page' => $paginator->page - 1, 'where' => NULL}">« Předchozí</a>
a do presenteru přidám:
/**
* @persistent
* @var string
*/
public $where;
Tak se vůbec nic nestane a ten parametr where tam dále zůstává.
Editoval Proloo (14. 6. 2012 13:56)
- Proloo
- Člen | 24
No asi mic nic jinýho nezbyde, ale připadá mi to zbytečný kvuli odkazu (kterej by klidně mohl být naprosto obecnýho tvaru) počítat při generování každé stránky 20× (počet témat na stránce) počet příspěvků v každým tématu.
Proto jsem to chtěl nějakým způsobem zjednodušit.
Teda pokud to nechci dělat stylem „na prase“, kdy bych tam jednoduše hodil nějakej nesmysl typu stránka 9999999, což by účel splnilo (hodilo mě to na poslední stránku a dál mi to nepřekáželo).
Editoval Proloo (14. 6. 2012 14:07)