Nette\Datagrid – ziskani linku uchovavajiciho aktualni stav

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

Ahoj,

da se v Nette\Datagridu (btw. fakt vyborna prace Romane) udelat to, abych napr.

  • kliknul na akci detail, ktera me prenese na nejakou stranku
  • z te stranky abych se mohl vratit na datagrid ve stejnem stavu (zachovat strankovani, razeni, filtry) ?
PaBi3
Bronze Partner | 62
+
0
-

Ja som to vo vlastnom datagride riešil tak, že som cez statickú metódu getPersistentComponents() nastavil datagrid ako perzistentný a následne som ten komponent aj vytvoril v metóde startup(). Obe metódy mám v abstraktnej triede BasePresenter.

...
abstract class BasePresenter extends \BasePresenter
	public static function getPersistentComponents()
	{
		return array('DataGrid');
	}

	protected function startup()
	{
		parent::startup();
		...
		$this->getComponent('DataGrid');
	}
...

Editoval PaBi3 (2. 7. 2009 13:18)

vlna
Člen | 34
+
0
-

Tohle mi v Nette jeste unika, co se po tomhle deje?
Znamena to, ze se ten objekt bude nejak serializovat a ukladat do sessions ?

romansklenar
Člen | 655
+
0
-

Jak píše PaBi3, jeden ze způsobů je udělat z datagridu persistentní komponentu a další je novinka v DataGridu, která je zatím ve vývojové verzi k dispozici přes svnko a to je, že si DataGrid ukládá (volitelně) svůj stav do session, platnost session se dá samozřejmě nastavit.

$grid->rememberState = TRUE; // ukládání stavů komponenty do session
$grid->timeout = '+ 7 days'; // nastavení expirace session
vlna
Člen | 34
+
0
-

Obe reseni muj problem vyresi, diky za rady.
Jenom ze zajmu, Romane, planuje se v budoucnu moznost vyjadrit stav datagridu napr. nejakou metodou, ktera by vratila neco jako back-link = url s query_stringem stavu datagridu ? … ted me donapadlo, ze bych si nejspis take mohl vzit query_string nekde z pole $_SERVER a obnovit stav odsud – pro pripad, ze by ukladani do sessions byl problem.

romansklenar
Člen | 655
+
0
-

IMHO už něco takového Nette umí samo od sebe:

$grid->getParam(); // vrátí aktuální parametry komponenty jako asoc. pole
$grid->link('this'); // vrátí zase pro změnu vygenerovaný odkaz s momentálním stavem komponenty