Antwort #4 am: 05. Dezember 2011, 07:55:09
Hallo Matt.
habe ich dich da verkehrt verstanden ?
Schriebst du nicht:
[...]
"item_data.text" steht an der Stelle noch gar nicht zur Verfügung und wird daher bei einem Vergleich auf einen leeren String auch immer "false" zurückgeben.
[...]
Damit hast du doch gesagt, daß:
{if $item_data.text ==''}
"false" ergibt.
Jetzt sagst du es ergibt "true".
Dann sagst du, daß:
{if $item_data.text ===''}
das Gegenteil von obigem meint.
Wie das ? Es sagt doch lediglich, daß hier auch der Typ verglichen wird, also integer, boleen, float, string, usw.
Wenn "$item_data" noch nicht vergeben ist, wird in der Tat nur die 1. Variante "true" ergeben.
Der Typenvergleich setzt ja voraus, daß "$item_data" bekannt ist und einen leeren String beinhaltet, was ja dann "false" ergeben muß und
{if $item_data.text !==''}
muß "false" ergeben, weil "$item_data.text" nicht gefüllt ist.
Okay, soweit verstehe ich (hoffentlich).
Das heißt, daß in dem von mir angewendeten Fall ul-tags ausgegeben werden, da ja die Aussage
{if $item_data.text ==''}
"true" ergibt.
Warum aber werden keine leeren ul-tags ausgegeben, wenn "$item_data" nicht vorhanden ist ?
Das kann ja nur passieren wenn die obige Aussage "false" ergibt.
Irgendwie verstehe ich nur Bahnhof.
Was du am Schluß sagst:
[...]
Gibt sie ja auch. Vermutlich ist "item_data" nur gesetzt wenn Unterkategorien vorhanden sind und "item_data.text" ergibt dann "true". So tief bin ich in Smarty auch nicht drin.
geht ja überhaupt nicht, denn meine Abfrage nimmt ja den Fall an, daß der String leer ist.
Sollte ich auf dem Schlauch stehen, bitte ich um Nachsicht.
noRiddle
P.S.: Vielleicht kann ja noch jemand anders Stellung nehmen ?