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 | 408
+
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 );