Smarty - Zugriff auf Php-Arrays und -Objekte

03. September 2008
Nachfolgend werden ein paar kleine Anwendungsbeispiele gegeben, die den Umgang mit PHP-Arrays bzw. PHP-Objekten in Verbindung mit der Template-Engine Smarty zeigen.

Als erstes Beispiel dient ein einfaches Array (PHP-Datei ). Dieses wird der jeweiligen Template-Variable zuweisen (per assign):
 

/*** PHP-Datei - Bsp.1 ***/

$ary = array("Hallo", "Wie", "geht's?");
$smarty->assign('ary', $ary);
 
Der Zugriff im Template-File erfolgt wahlweise mittels foreach-Schleife:
 

{* Template-Datei - Bsp.1 *}

{foreach key=idx item=element from=$ary}
    <div>{$idx} = {$element}</div>
{/foreach}
 
oder per Index:
 

{* Template-Datei - Bsp.1 *}

<div>
    erstes Element  = {$ary[0]},
    zweites Element = {$ary[1]},
    drittes Element = {$ary[2]}
</div>
 
Ein assoziatives Array dient als zweites Beispiel. Auch dies muss der entsprechenden Template-Variable zugewiesen werden.
 

/*** PHP-Datei - Bsp.2 ***/

$ary = array(
        'name' => 'Name',
        'str'  => 'Strasse',
        'tel'  => array(
                    'priv'  => '12345',
                    'gesch' => '54321'
                    )
        );
$smarty->assign('ary', $ary);
 
Der Zugriff auf die jeweiligen Elemente erfolgt hierbei in der Template-Datei mittels des Schlüssels (Key):
 

{* Template-Datei - Bsp.2 *}

<div>
    Name         = {$ary.name},
    Strasse      = {$ary.str},
    Tel.(privat) = {$ary.tel.priv}
</div>
 
Als letztes Beispiel dient ein (mittels stdClass erzeugtes anonymes) Objekt. Dies wird mit Beispiel-Werten befüllt. Anschließend wird es - wie gehabt - einer Template-Variablen zugewiesen:
 

/*** PHP-Datei - Bsp.3 ***/

$obj       = new stdClass();
$obj->name = 'Schmitt';
$obj->geb  = '1965';

$obj->tel        = new stdClass();
$obj->tel->priv  = '12345';
$obj->tel->gesch = '54321';

$smarty->assign('obj', $obj);
 
Der Zugriff auf die Objekt-Eigenschaften erfolgt (im Template) per Pfeil-Operator und den Eigenschaftsbezeichnern:
 

{* Template-Datei - Bsp.3 *}

<div>
    Name        = {$obj->name},
    Geburtsjahr = {$obj->geb},
    Tel.(privat)= {$obj->tel->priv}
</div>
 
Immer noch kein Kommentar. Jetzt wird's aber mal Zeit!
HILFE
Code-Beispiele werden mit den BBCodes [code][/code] dargestellt. Jedes Tag muss eine Zeile für sich allein haben, d.h der Beispiel-Code muss wirklich ZWISCHEN den Tags stehen. Beispiel:
[code] ACHTUNG! HIER UMBRUCH WICHTIG. TAG [code] MUSS ALLEIN STEHEN
#include <stdio.h>

int main( void ){
    return 0;
} ACHTUNG! HIER UMBRUCH WICHTIG. NACHFOLGENDES TAG [/code] MUSS ALLEIN STEHEN
[/code]

Alles was zwischen den beiden Tags [register] und [/register] eingetragen wird, ist nur für registrierte (und eingeloggte) User sichtbar.
Dein Name *
Deine Email
Deine Website
Vorschau