Získání query stringu persistentních parametrů komponenty

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

Zdravím,
jak můžu získat query string persistentních parametrů z komponenty ?
Dám příklad, na co to potřebuji.
Vytvořím si CrudPresenter, kde budou metody default, create, update, delete a factorka na DataGrid.
DataGrid komponenta má jako potomka VisualPaginator komponentu od DG.
Jako reakce na default akci CrudPresenteru je rendering toho DataGridu, který v render metodě vykresluje taky svůj paginátor.
DataGrid podle nějakých členských proměnných svého CrudPresenteru ví, jaká data má načíst.
Takže vždycky jenom podědím CrudPresenter, nastavím nějaké vlastnosti a zbytek je automatický.
Jeden záznam DataGridu jsou vždycky nějaké data a pak nějaké akce, jako smazání záznamu nebo editace – tyhle akce vedou právě na ty další metody CrudPresenteru.
actionDelete metoda CrudPresenteru přijímá id,maže záznam a přesměrovává zase na default akci, aby se znova vykreslil DataGrid. Tady sem ale narazil, protože nevím, jak nějak jednoduše vytáhnout z komponenty její persistentní parametry, abych je přidal do těch odkazů na různé akce presenteru.
Záznam totiž mažu na nějaké stránce a chci, aby se po redirectu DataGrid vykreslil zpět na té stránce, což se ale nevykreslí, protože VisualPaginator si svoji stránku určuje tím, že si tahá z url persistentní parametr „page“, který v těch odkazech na akce CrudPresenteru není, protože ty odkazy musím generovat normálně link metodou presenteru a ta nezahrnuje persistentní parametry svých komponent.
Vlastně sem měl navíc pocit, že když jsem pročítal tutoriály, tak u persistentních parametrů bylo, že se automaticky udržují v url, přitom v paginator_template.phtml od DG je

<?php
<a href="{link this, 'page' => $paginator->page - 1}">« Previous</a>
?>

Takže to moc nevypadá na nic automatického ne?

22
Člen | 1478
+
0
-
$this->getParam('name');

//eventuelně
$this->getParams('<component>-page');

Editoval 22 (3. 9. 2011 20:41)

jh
Člen | 22
+
0
-

22 napsal(a):

$this->getParam('name');

//eventuelně
$this->getParams('<component>-page');

Myslel jsem spíš něco, kde bych nemusel přesně vědět to jméno komponenty nebo parametru, něco jako
$control->getPersistentParams nebo tak, co by automaticky prošlo ten strom komponent a sestavilo jak kliče, tak hodnoty.

VaKvas
Začátečník | 111
+
0
-

zkus getParams(), tedy bez parametru. Vraci to array …

Editoval VaKvas (3. 9. 2011 21:30)

22
Člen | 1478
+
0
-

$control->getPersistentParams

a tohle nestačí?

jh
Člen | 22
+
0
-

22 napsal(a):

$control->getPersistentParams

a tohle nestačí?

To vrací pole jmen těch persistentních parametrů, takže třeba „page“ v případě toho paginátoru.
Myslel jsem, jestli třeba není nějaká metoda na generování odkazu nebo něco, co by zahrnulo persistentní parametry ze všech připojených komponent.

Budu mít presenter, kde bude připojenej dataGrid, který ma potomka paginátor a ten má persistentní parametr page.
$presenter->linkWithPersistentParams(‚edit‘); // presenter/edit/?dataGrid-visualPaginator-page=1

To si budu muset ale napsat asi sám.

VaKvas
Začátečník | 111
+
0
-

Zkus se jeste podivat sem na backlink, storeRequest() a restoreRequest() ..
Ja to u gridu resim pres toto…