Variable an Template geben


#1

Grüßt euch,

ich steh vor folgendem Problem.
Ich möchte einen Wert mittels Controller an ein Template weitergeben ohne ihn Zwangsläufig in der DB zu speichern.
Dazu habe ich mir angeschaut, was Oxid da so bereitstellt und diese beiden Funktionen gefunden.
Im Controller dieser Aufruf:
$this->getViewConfig()->setViewConfigParam('attribute', $value);

Im Template dieser Aufruf:
[{ $oViewConf->getViewConfigParam("attribute") }]

Klappt leider nicht.
Dann habe ich versucht die Variable mittels Get Methode des Controllers im Template auszugeben.

[{ $oView->getAttribute() }]

dann bekomme ich, Para:Function ‘getAttribute’ does not exist or is not accessible! (oxUBase)

Methode ist public und die Controller Klasse von oxUBase abgeleitet.
Wer eine Idee woran es scheitert ?

Alles Gute,


#2

das sollte funktionieren.

Wo genau im controller passiert das?
in render()?
oder andere Funktion? Wenn ja, wird diese Funktion denn auch aufgerufen?


#3

Und welches Template, könnte z.B. sein dass das Template ein Widget mit eigenem Controller ist.
Viewconfig ist auch unzuverlässig wg. diesem Bug: https://bugs.oxid-esales.com/view.php?id=4773
Besser direkt mit $this->_aViewData[“variable”] übergeben.


#4

Vielen Dank, setzen mit $this->_aViewData[“variable”] und Ausgabe im Template mit [{$variable}] klappt sehr gut.

Hatte den Aufruf von setViewConfigParam in einer anderen Funktion als die render() genutzt.
Und die Funktion wurde aufgerufen, das war gecheckt.
Kann auch mit $this->getViewConfig()->getViewConfigParam("attribute") drauf zugreifen, nur die Ausgabe im Template selbst klappt nicht.


#5

Wahrscheinlich weil Viewconfig eben ausgetauscht wird nachdem ein Widget geladen wurde, dann sind die gespeicherten Parameter weg.