Condition (SP-Tag): Unterschied zwischen den Versionen

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen
K (Hob den Schutz von „Condition (SP-Tag)“ auf)
 
(13 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 3: Zeile 3:
  
 
==Syntax==
 
==Syntax==
<source lang="xml">
+
<source lang="php">
 
<sp:if condition="${a} > ${b}">
 
<sp:if condition="${a} > ${b}">
 
   ...
 
   ...
Zeile 25: Zeile 25:
  
 
==Beschreibung==
 
==Beschreibung==
Die vier Tags ermöglichen es verschiedene Bedingungen abzufragen. Einfache Abfragen können direkt mit dem <code><sp:if></code> erstellt werden.
+
Die vier Tags ermöglichen es verschiedene Bedingungen abzufragen. Einfache Abfragen können direkt mit <code><sp:if></code> erstellt werden. Werden else- bzw. elseif-Bedingungen in einer Abfrage benötigt, muss die gesamte Abfrage-Struktur mit <code>sp:condition</code> umschlossen werden. Zu beachten ist hier, dass zwischen <code><sp:condition></code> und <code><sp:if></code> kein Text stehen darf. Das gleiche gilt für <code></sp:if></code> und <code><sp:elseif></code>, <code></sp:elseif></code> und <code><sp:elseif></code>, <code></sp:elseif></code> und <code><sp:else></code> sowie <code></sp:else></code> und <code></sp:condition></code>.
  
Es bestehen zwei Möglichkeiten der <code>if</code>-Abfrage. Zum einen kann mit dem <code>name</code>-Attribute die zu prüfende Variable und mit <code>gt</code>, <code>gte</code>, <code>lt</code>, usw. die zu prüfende Bedingung angegeben werden. Für komplexe Abfragen ist diese Möglichkeit nicht ausreichend, da verschachtelte UND- und ODER-Verknüpfungen so sehr Aufwendig werden können. Das <code>condition</code>-Attribute bietet eine weitere Möglichkeit Bedingungen zu formulieren. Innerhalb dieses Attributes können Ausdrücke wie folgt angegeben werden.
+
Es bestehen zwei Möglichkeiten zur Abfrage einer Bedingung. Zum einen können Sie mit dem <code>name</code>-Attribut in Verbindung mit <code>gt</code>, <code>gte</code>, <code>lt</code>, usw. die zu prüfende Bedingung angegeben. Zum anderen können Sie für komplexe Abfragen mit dem <code>condition</code>-Attribut komplexe Bedingungen formulieren. Innerhalb dieses Attributes können Ausdrücke beispielsweise wie folgt angegeben werden.
  
 
<source lang="xml">
 
<source lang="xml">
Zeile 34: Zeile 34:
 
</sp:if>
 
</sp:if>
 
</source>
 
</source>
 
Sollte der Vergleich positiv sein, wird der Tagbody des <code>if</code>-Tags weiter behandelt. Andernfalls wird der Taginhalt übersprungen. Bei aufwendigeren Abfragen, die zum Beispiel einen <code>else</code> Tag oder mehrere <code>elseif</code> Bereiche besitzen können, wird das Tag <code><sp:condition></code> benötigt, dass die Abfrage umschliesst. Das <code>condition</code>-Tag ermöglicht die Implementation von diversen <code><sp:if></code>-<code><sp:elseif></code>-<code><sp:else></code> Konstrukten. Zu beachten ist, dass zwischen <code><sp:condition></code> und <code><sp:if></code> kein Text stehen darf. Das gleiche gilt für <code></sp:if></code> und <code><sp:elseif></code>, <code></sp:elseif></code> und <code><sp:elseif></code>, <code></sp:elseif></code> und <code><sp:else></code> sowie <code></sp:else></code> und <code></sp:condition></code>.
 
  
 
==Attribute==
 
==Attribute==
{| class="prettytable"
+
{| class="prettytable sortable"
 
|- class="hintergrundfarbe1"
 
|- class="hintergrundfarbe1"
 
! Name || Type || Required || Default || ab IES Version
 
! Name || Type || Required || Default || ab IES Version
Zeile 79: Zeile 77:
 
|-
 
|-
 
| <code>eq</code>
 
| <code>eq</code>
| [[Variable]]
+
| [[Attribute]]
 
| Nein
 
| Nein
 
| None
 
| None
Zeile 85: Zeile 83:
 
|-
 
|-
 
| <code>neq</code>
 
| <code>neq</code>
| [[Variable]]
+
| [[Attribute]]
 
| Nein
 
| Nein
 
| None
 
| None
Zeile 91: Zeile 89:
 
|-
 
|-
 
| <code>gt</code>
 
| <code>gt</code>
| [[Variable]]
+
| [[Attribute]]
 
| Nein
 
| Nein
 
| None
 
| None
Zeile 97: Zeile 95:
 
|-
 
|-
 
| <code>gte</code>
 
| <code>gte</code>
| [[Variable]]
+
| [[Attribute]]
 
| Nein
 
| Nein
 
| None
 
| None
Zeile 103: Zeile 101:
 
|-
 
|-
 
| <code>lt</code>
 
| <code>lt</code>
| [[Variable]]
+
| [[Attribute]]
 
| Nein
 
| Nein
 
| None
 
| None
Zeile 122: Zeile 120:
  
 
;<code>name</code>
 
;<code>name</code>
:Name der Variable, bzw des Objektes das verglichen werden soll.
+
:Variablenname eines Objektes das verglichen werden soll.
  
 
;<code>locale</code>
 
;<code>locale</code>
:Dieses Attribut dient zur Auswahl der zu verwendende Sprache bei mehrsprachiger Variablen.
+
:Dieses Attribut dient zur Auswahl der zu verwendenden Sprache bei mehrsprachigen Variablen.
  
 
;<code>isNull</code>
 
;<code>isNull</code>
:Die Bedingung ist erfüllt, wenn die Variable in <code>name</code> leer oder nicht vorhanden ist und <code>isNull</code> den Wert <code>true</code> hat. Wenn <code>isNull</code> den Wert <code>false</code> hat, ist die Bedingungen erfüllt, wenn die die Variable in <code>name</code> nicht leer ist.
+
:Die Bedingung ist erfüllt, wenn die Variable in <code>name</code> leer oder nicht vorhanden ist und <code>isNull</code> den Wert <code>true</code> hat. Wenn <code>isNull</code> den Wert <code>false</code> hat, ist die Bedingungen erfüllt, wenn die Variable in <code>name</code> nicht leer ist.
  
 
;<code>ic</code>
 
;<code>ic</code>
:Die Auswertung soll "ignore case" durchgeführt werden. Bezieht sich auf <code>eq</code>, <code>neq, <code>gt</code>, <code>gte</code>, <code>lt</code>, <code>lte</code>, und <code>contains</code>.
+
:Die Auswertung soll "ignore case" durchgeführt werden. Bezieht sich auf <code>eq</code>, <code>neq</code>, <code>gt</code>, <code>gte</code>, <code>lt</code>, <code>lte</code>, und <code>contains</code>.
  
 
;<code>contains</code>
 
;<code>contains</code>
Zeile 140: Zeile 138:
  
 
;<code>eq</code>
 
;<code>eq</code>
:Die Bedingung ist erfüllt, wenn die Variable in <code>name</code> gleich der Variable in <code>eq<code> ist.
+
:Die Bedingung ist erfüllt, wenn die Variable in <code>name</code> gleich der Variable in <code>eq</code> ist.
  
 
;<code>neq</code>
 
;<code>neq</code>
Zeile 162: Zeile 160:
 
==Beispiele==
 
==Beispiele==
  
====isNull Prüfung====
+
===isNull Prüfung===
  
 
Template Quelltext
 
Template Quelltext
Zeile 185: Zeile 183:
 
</source>
 
</source>
  
====Einfache if Bedingung====
+
===Einfache if Bedingung===
  
 
Template Quelltext
 
Template Quelltext
Zeile 200: Zeile 198:
 
</source>
 
</source>
  
====Einfache if-elseif-else Bedingung====
+
===Einfache if-elseif-else Bedingung===
  
 
Template Quelltext
 
Template Quelltext
Zeile 232: Zeile 230:
 
</source>
 
</source>
  
====Abfrage mit condition====
+
===Abfrage mit condition===
  
 
Template Quelltext
 
Template Quelltext
Zeile 259: Zeile 257:
 
</source>
 
</source>
  
====Prüfe Boolean====
+
===Prüfe Boolean===
  
 
Template Quelltext
 
Template Quelltext
Zeile 283: Zeile 281:
 
<noinclude>
 
<noinclude>
 
[[Category:SP-Tags]]
 
[[Category:SP-Tags]]
[[Category:Qualität_des_Inhalts_prüfen]]
 
[[Category:Qualität_der_Sprache_prüfen]]
 
 
[[Category:Qualität_des_Codes_prüfen]]
 
[[Category:Qualität_des_Codes_prüfen]]
 
</noinclude>
 
</noinclude>

Aktuelle Version vom 24. Februar 2010, 12:29 Uhr

Name

<sp:condition>, <sp:if>, <sp:elseif>, <sp:else> - Bedingungen prüfen

Syntax

<sp:if condition="${a} > ${b}">
  ...
</sp:if>

<sp:condition>
  <sp:if condition="${a} <= 0">
    ...
  </sp:if>
  <sp:elseif condition="${a} > 0 && ${a} < 10">
    ...
  </sp:elseif>
  <sp:elseif condition="${a} >= 10 && ${a} < 100">
    ...
  </sp:elseif>
  <sp:else>
    ...
  </sp:else>
</sp:condition>

Beschreibung

Die vier Tags ermöglichen es verschiedene Bedingungen abzufragen. Einfache Abfragen können direkt mit <sp:if> erstellt werden. Werden else- bzw. elseif-Bedingungen in einer Abfrage benötigt, muss die gesamte Abfrage-Struktur mit sp:condition umschlossen werden. Zu beachten ist hier, dass zwischen <sp:condition> und <sp:if> kein Text stehen darf. Das gleiche gilt für </sp:if> und <sp:elseif>, </sp:elseif> und <sp:elseif>, </sp:elseif> und <sp:else> sowie </sp:else> und </sp:condition>.

Es bestehen zwei Möglichkeiten zur Abfrage einer Bedingung. Zum einen können Sie mit dem name-Attribut in Verbindung mit gt, gte, lt, usw. die zu prüfende Bedingung angegeben. Zum anderen können Sie für komplexe Abfragen mit dem condition-Attribut komplexe Bedingungen formulieren. Innerhalb dieses Attributes können Ausdrücke beispielsweise wie folgt angegeben werden.

<sp:if condition="(${a} > ${b}) && ((${a} + 3) / 10 < ${b})}">
  ..
</sp:if>

Attribute

Name Type Required Default ab IES Version
name Variable Ja oder condition None 1
locale Locale Nein None 1
isNull Condition Nein None 1
ic Condition Nein false 1
contains Text Nein None 1
match Regular-Expression Nein None 1
eq Attribute Nein None 1
neq Attribute Nein None 1
gt Attribute Nein None 1
gte Attribute Nein None 1
lt Attribute Nein None 1
lte Locale Nein None 1
condition Condition Nein None 1
name
Variablenname eines Objektes das verglichen werden soll.
locale
Dieses Attribut dient zur Auswahl der zu verwendenden Sprache bei mehrsprachigen Variablen.
isNull
Die Bedingung ist erfüllt, wenn die Variable in name leer oder nicht vorhanden ist und isNull den Wert true hat. Wenn isNull den Wert false hat, ist die Bedingungen erfüllt, wenn die Variable in name nicht leer ist.
ic
Die Auswertung soll "ignore case" durchgeführt werden. Bezieht sich auf eq, neq, gt, gte, lt, lte, und contains.
contains
Zeichenkette, die in der Variablen enthalten sein soll.
match
Regulärer Ausdruck, der in der Variablen enthalten sein soll.
eq
Die Bedingung ist erfüllt, wenn die Variable in name gleich der Variable in eq ist.
neq
Die Bedingung ist erfüllt, wenn die Variable in name ungleich der Variable in neq ist.
gt
Die Bedingung ist erfüllt, wenn die Variable in name grösser als der Variable in gt ist.
gte
Die Bedingung ist erfüllt, wenn die Variable in name grösser oder gleich der Variable in gte ist.
lt
Die Bedingung ist erfüllt, wenn die Variable in name kleiner als in der Variable in lte ist.
lte
Die Bedingung ist erfüllt, wenn die Variable in name kleiner oder gleich der Variable in lte ist.
condition
Es wird eine Condition erwartet, die den Wert true oder false zurückliefert.

Beispiele

isNull Prüfung

Template Quelltext

<sp:set name="foo" value="bar"/>
<sp:if name="foo">	foo ist definiert!
</sp:if>

<%-- kein Inhalt ist gleichbedeutend mit 'nicht definiert' --%>

<sp:set name="foo" value=""/>

<sp:if name="foo" isNull="true">
  foo ist nicht definiert!
</sp:if>

Ausgabe

foo ist definiert!
foo ist nicht definiert!

Einfache if Bedingung

Template Quelltext

<sp:set name="foo" value="bar"/>
<sp:if name="foo" eq="bar">
  foo hat den Wert <sp:print name="foo"/>
</sp:if>

Ausgabe

foo hat den Wert bar

Einfache if-elseif-else Bedingung

Template Quelltext

<%--
  Bei der Verwendung von if-elseif-else Konstrukten müssen die
  einzelnen Tags in einem <sp:condition> zusammengefasst werden.
--%>
<sp:condition>
  <sp:if name="foo" eq="foo">
    Ich bin im if-Zweig
  </sp:if>
  <sp:elseif name="foo" eq="barx">
    Ich bin im ersten ifelse-Zweig
  </sp:elseif>
  <sp:elseif name="foo" eq="bar">
    Ich bin im zweiten elseif-Zweig
  </sp:elseif>
  <sp:elseif condition="!isNull(${foo})">
    Ich bin im dritten elseif-Zweig
  </sp:elseif>
  <sp:else>
    Ich bin im else-Zweig
  </sp:else>
</sp:condition>

Ausgabe

Ich bin im zweiten elseif-Zweig

Abfrage mit condition

Template Quelltext

<sp:if condition="${foo} == 'bar'">
  ${foo} == 'bar' liefert true
</sp:if>

<sp:set name="x" value="5"/>
<sp:set name="y" value="10"/>

<sp:if condition="(${x} + ${y}) == 15">
  Die Summe von x und y ist 15
</sp:if>

<sp:if condition="${x} > 2 && ${x} < 20">
  x ist größer als 2 und kleiner als 20
</sp:if>

Ausgabe

${foo} == 'bar' liefert true
Die Summe von x und y ist 15
x ist größer als 2 und kleiner als 20

Prüfe Boolean

Template Quelltext

<sp:set name="boolean" value="true"/>
<sp:if condition="${boolean} == true">
  1: boolean ist wahr.
</sp:if>
<sp:if condition="${boolean} == 'true'">
  2: boolean ist wahr.
</sp:if>
<sp:if condition="${boolean} == 1">
  3: boolean ist wahr.
</sp:if>

Ausgabe

2: boolean ist wahr.