Mittwoch, 27. Oktober 2010

Arrayelemente zählen mit Smarty

Die Anzahl der Elemente eines Arrays in Smarty erhält man mit

{$myArray|@count}

oder mit

{@count($myArray)}

Damit lassen sich schöne Ausgaben zaubern, in dem man etwa prüft, ob ein Array Werte beinhaltet (z.B. nach einer DB-Abfrage) oder eben nicht und dann, je nachdem, die Ausgabe Benutzerfreundlich macht:

{if @count($myArray)>0}
  Toll, es gibt {@count($myArray)} Einträge :)
{else}
  Sorry, keine Einträge gefunden :(
{/if}

Die Angabe des @-Modifikators gibt an, dass nun eine PHP Funktion folgt. Intern wird also die PHP-Funktion count aufgerufen und dessen Rückgabe dann eingesetzt und benutzt.

Aber aufpassen: Wenn die $security Variable auf true steht, dann muss jede PHP-Funktion, die man so benutzen möchte, auch im $security_settings['MODIFIER_FUNCS']-Array stehen, sonst funktioniert der Aufruf nicht!

Quelle: Smarty-Doku, Kapitel 5 - Variablen Modifikatoren

2 Kommentare:

Fabian Blechschmidt hat gesagt…

Das @ kann man weglassen beim {if} in smarty.

Fabian Blechschmidt hat gesagt…

P.S.
vgl. Smarty Doku {if} Beispiel 7.8

{* einbetten von php Funktionsaufrufen ('gt' steht für 'grösser als') *}
{if count($var) gt 0}
...
{/if}