Vydolování proměnných ze šablony

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

Dobré odpoledne,
poradil by mi, prosím, někdo jednoduchý způsob, jak v Nette2 presenteru v betoreRender() vydolovat všechna data, která jsem v presenteru předal šabloně?

zkoušel jsem ohýbat objekt, který dostanu z $this->getTemplate()->getParameters(), ale bohužel bezúspěšně…

Editoval cniry2 (7. 4. 2013 14:59)

Grelek
Člen | 233
+
0
-

Nevím, nikde jsem nezkoušel, ale zkus si dumpnout $this->template.

EDIT: Jo beforeRender. Tak to nevím. Teď jsem to zkoušel a v render* to funguje. V beforeRender si ani nejsem jistý, že to jde udělat. Podívej se na životní cyklus presenteru. Můžeš to zkusit v shutdown.

Editoval Grelek (7. 4. 2013 15:10)

cniry2
Člen | 6
+
0
-

Grelek napsal(a):

Nevím, nikde jsem nezkoušel, ale zkus si dumpnout $this->template.

EDIT: Jo beforeRender. Tak to nevím. Teď jsem to zkoušel a v render* to funguje. V beforeRender si ani nejsem jistý, že to jde udělat. Podívej se na životní cyklus presenteru.

data předávám v action, takže beforeRender je vidí, ale kromě mých dat je v tom objektu $this->template i obrovské množství „omáčky“

norbe
Backer | 405
+
0
-

Myslím že získat pouze tvé proměnné nijak jednoduše nepůjde. Kdybych něco takového potřeboval, asi bych data nevkládal do šablony přímo ale například do proměnné templateVariables. V beforeRender bych pak mohl pole proiterovat a nastavit proměnné šabloně…

cniry2
Člen | 6
+
0
-

vydoloval jsem požadovaná data, ale pořád mi to není moc elegantní řešení

$list = $this->template->getParameters();
$data = array();
foreach( $list as $key => $value ){
    if( !is_object($value) || ($value instanceof DibiRow) ){
        $data[ $key ] = $value;
    }
}
dump( $data );