Search the FirstSpirit Knowledge Base
In Templates kann sowohl mit isNull() als auch mit isEmpty() auf leere Formularwerte geprüft werden:
$CMS_IF(!st_text.isEmpty)$CMS_VALUE(st_text)$$CMS_END_IF$
$CMS_IF(!st_text.isNull)$CMS_VALUE(st_text)$$CMS_END_IF$
Was genau ist der Unterschied?
Gibt es eine Dokumentation zu solchen Methoden?
Hallo,
also das lässt sich sich relativ einfach an folgendem Beispiel erklären:
myNull.isNull: $CMS_VALUE(myNull.isNull)$
myNull.isEmpty: $CMS_VALUE(myNull.isEmpty)$
$CMS_SET(myString, "")$
myString.isNull: $CMS_VALUE(myString.isNull)$
myString.isEmpty: $CMS_VALUE(myString.isEmpty)$
$CMS_SET(myList, [])$
myList.isNull: $CMS_VALUE(myList.isNull)$
myList.isEmpty: $CMS_VALUE(myList.isEmpty)$
Ergibt folgende Ausgabe:
myNull.isNull: true
myNull.isEmpty: true
myString.isNull: false
myString.isEmpty: true
myList.isNull: false
myList.isEmpty: true
Zusammenfassend kann man wohl behaupten der Wert NULL ist auch immer "empty" umgekehrt aber nicht. isEmpty prüft also Typ-Abhängig, isNull nicht. Wir verwenden in der Regel isEmpty, da das häufig der Logik entspricht mit der man im Template Entscheidungen treffen möchte.
Ich bin mir nicht sicher, ob man es propagieren sollte, aber isEmpty lässt sich auch einfacher schreiben:
$CMS_IF(myValue.empty)$ ...
Funktioniert einwandfrei und klappt auch mit den meisten get-Funktionen
Unter Vorlagenentwicklung -> Vorlagensyntax -> Datentypen steht was diese so können.
Beste Grüße
Julius Müller
Hallo,
also das lässt sich sich relativ einfach an folgendem Beispiel erklären:
myNull.isNull: $CMS_VALUE(myNull.isNull)$
myNull.isEmpty: $CMS_VALUE(myNull.isEmpty)$
$CMS_SET(myString, "")$
myString.isNull: $CMS_VALUE(myString.isNull)$
myString.isEmpty: $CMS_VALUE(myString.isEmpty)$
$CMS_SET(myList, [])$
myList.isNull: $CMS_VALUE(myList.isNull)$
myList.isEmpty: $CMS_VALUE(myList.isEmpty)$
Ergibt folgende Ausgabe:
myNull.isNull: true
myNull.isEmpty: true
myString.isNull: false
myString.isEmpty: true
myList.isNull: false
myList.isEmpty: true
Zusammenfassend kann man wohl behaupten der Wert NULL ist auch immer "empty" umgekehrt aber nicht. isEmpty prüft also Typ-Abhängig, isNull nicht. Wir verwenden in der Regel isEmpty, da das häufig der Logik entspricht mit der man im Template Entscheidungen treffen möchte.
Ich bin mir nicht sicher, ob man es propagieren sollte, aber isEmpty lässt sich auch einfacher schreiben:
$CMS_IF(myValue.empty)$ ...
Funktioniert einwandfrei und klappt auch mit den meisten get-Funktionen
Unter Vorlagenentwicklung -> Vorlagensyntax -> Datentypen steht was diese so können.
Beste Grüße
Julius Müller
Vielen Dank. So ungefähr hatte ich mir das schon gedacht. Dann hängt es also vom Datentyp ab, wie sich die Methode isEmpty verhält. In der Dokumentation ist mir noch aufgefallen, dass das gleiche auch für die Methode isNull gilt, d.h. auch bei dieser Methode entscheidet der Datentyp selbst, wann er null ist.
Welche Stelle meinen Sie da?
$CMS_VALUE(null.isNull)$ liefert "true" (und keine Exception), alternativ kann man auch $CMS_VALUE(x == null)$ verwenden, für Java-Entwickler sollte das die "natürlichere" Schreibweise sein.
Das ist tatsächlich missverständlich ausgedrückt. Was dort gemeint ist, das Eingabekomponenten einen Wert != null liefern können, auch wenn kein Wert explizit gesetzt wurde, und daher der Benutzung von "isEmpty" besser geeignet ist.