Accesso ogni variabile è molto ingombrante, quindi quello che ho fatto, alla fine, è stato quello di creare un'estensione che contiene i dati che ho bisogno:
class SampleExtension extends Twig_Extension {
private $foo;
function getName() {
return 'sampleExtension';
}
function getFunctions() {
return array(
'setFoo' => new Twig_Function_Method($this, 'setFoo')
);
}
function setFoo($value) {
$this->foo = $value;
}
function getFoo() {
return $this->foo;
}
}
E nella classe in cui avevo bisogno di dati:
$this->sampleExtension = new SampleExtension();
$twigEnv->addExtension($this->sampleExtension);
...
$html = $twigEnv->render('myTemplate.tpt', ...);
Utilizzando questo modello:
...
{{ setFoo('bar') }}
...
Dopo il rendering:
echo $this->sampleExtension->getFoo(); // Prints bar
Questo potrebbe funzionare se le variabili all'interno di quell'array ci sono riferimenti. Non l'ho provato, ma non dico mai mai :) – hakre
Sarebbe possibile se ho inviato nell'array di contesto un oggetto e impostato le proprietà di quell'oggetto con una funzione di ramoscello personalizzata? – ZenMaster
@ZenMaster Sì, sarebbe possibile;) – NikiC