Problem: Verschachtelte Objekte mit Smarty

mackattack

Mitglied
Moin Moin,

ich habe ein Problem. Ich versuche mich gerade daran, Objekte in Smarty-Templates anzusprechen. Grundsätzlich ist dies durch die Methode assign_by_ref() durchaus möglich und funktioniert auch super, aber was ist, wenn ich Rückgaben von verschachtelten Objekten brauche? Leider konnte mir die Suche kein passendes Ergebnis liefern, auch Google nicht - alsob ich der Erste wäre, der auf sowas stößt ;)

Beispiel:

Datenverarbeitende PHP-Datei:
PHP:
class TestClass1
{
	public $var1 = 123;
	public $var2 = 321;
	
	/**
	 * Rückgabe irgend eines Objektes
	 *
	 * @return TestClass2
	 */
	public function getClass2()
	{
		return new TestClass2();
	}
}

class TestClass2
{
	private $_var1 = 'asd';

	/**
	 * Rückgabe einer Objekt-Eigenschaft
	 *
	 * @return String
	 */
	public function getVar()
	{
		return $this -> _var1;
	}
}

$objSmarty = new Smarty();
$objSmarty -> assign_by_ref('objTestClass1', new TestClass1());
$objSmarty -> display( 'test.tpl' );

Template für die Ausgabe:
HTML:
{$objTestClass1->var1}    {* Gibt den richtigen Wert 123 zurück *}
{$objTestClass1->var2}    {* Gibt den richtigen Wert 321 zurück *}

{$objTestClass1->getClass2()}    {* Gibt das korrekte Objekt zurück *}
{$objTestClass1->getClass2()->getVar()}    {* Wirft den unten angegebenen Fehler *}

Fehlermeldung:
Fatal error: Smarty error: [in ...]: syntax error: unrecognized tag: $objTestClass1->getClass2()->getVar() (Smarty_Compiler.class.php, line 436) in .../Smarty/Smarty.class.php on line 1095


Find ich irgendwie komisch... wäre schon schön, wenn man auf den Unterobjekten korrekt arbeiten könnte, würde einiges wesentlich einfacher machen ;)

Wenn jemand eine Lösung/Workaround/Ansatz hat, bitte her damit, mein Dank sei demjenigen mehr als sicher :)

Peace,
MackAttack
 
Zurück