Nette\Datagrid – ziskani linku uchovavajiciho aktualni stav
- PaBi3
- Bronze Partner | 62
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)
- romansklenar
- Člen | 655
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
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
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