chriwi
Occasional Observer

Rule mit FormDataValueService

Jump to solution

Folgende Regel funktioniert nur zur Hälfte.

Ich hole mir aus der Seitenvorlage den Wert eines Feldes und schreibe den in die Absatzvorlage. Das funktioniert.

st_pageType ist entweder befüllt oder nicht.

Wenn ich dann mit einer weiteren Regel den Value auf einen bestimmmten Text prüfe der nicht da sein soll und das Feld st_pageTYpe leer ist soll ein weiters Formularfgeld eingeblendet werden.

Umgekehrt bedeutet es, wenn st_pageType den Wert "pt_resp_nutrition_calculator" hat und somit nicht empty ist, soll "st_seo_background" ausgeblendet werden. Und das funlktioniert nicht. Wo ist der Fehler.

st_seo_background  ist immer sichtbar.


<RULE>
<SCHEDULE delay="0" id="TundR" service="FormDataValueService">
<PARAM name="UID">
<PROPERTY name="PAGE_UID" source="#global"/>
</PARAM>
<PARAM name="UIDTYPE">
<TEXT>PAGESTORE</TEXT>
</PARAM>
<PARAM name="FIELD">
<TEXT>pt_template</TEXT>
</PARAM>
<PARAM name="LANGUAGE">
<PROPERTY name="LANG" source="#global"/>
</PARAM>
</SCHEDULE>
<DO>
<PROPERTY name="VALUE" source="st_pageType"/>
</DO>
</RULE>


<RULE when="ONLOCK">
<IF>
<NOT>
<EQUAL>
<PROPERTY name="VALUE" source="st_pageType"/>
<TEXT>pt_resp_nutrition_calculator</TEXT>
</EQUAL>
</NOT>
</IF>
<WITH>
<PROPERTY name="EMPTY" source="st_pageType"/>
</WITH>
<DO>
<PROPERTY name="VISIBLE" source="st_seo_background"/>
</DO>
</RULE>

 

VG Christiane.

0 Kudos
1 Solution

Accepted Solutions
hoebbel
Crownpeak employee

Hallo Christiane,

wenn ich es richtig sehe, spielen hier zwei Probleme rein.

1) Du benutzt ONLOCK - die Regel wird also beim Bearbeiten des Formulars einmalig ausgeführt. Zu dem Zeitpunkt ist das Ergebnis des Value Service aber noch nicht da, also wird das Feld nicht sichtbar. Wenn der Value Service dann den Wert geholt und über die andere Regel gesetzt hat, ist es zu spät.
Hinweis: Wenn diese Annahme stimmt, sollte es klappen, wenn Du speicherst, das Bearbeiten beendest und dann das Bearbeiten neu startest (dann ist der Wert ja schon da, Änderungen auf der Seite wirken dann aber erst wieder beim erneuten Bearbeiten.
Lösung hierfür: Das ONLOCK entfernen (dann sollte das Feld nach einigen Millisekunden sichtbar werden)

2) Du benutzt IF (im ersten Post). Das führt dazu, dass die Regel nur ausgeführt wird, wenn das IF Statement zutrifft. Trifft es nicht zu, wird die Regel nicht erneut ausgeführt, die Eingabekomponente wird also gegebenenfalls nicht wieder ausgeblendet, wenn auf der Seite etwas geändert wird. (Spielt im Moment noch keine Rolle wegen 1)
Lösung: Die beiden Bedingungen im WHEN Abschnitt der Regel verknüpfen

Viele Grüße
Holger

View solution in original post

0 Kudos
3 Replies
chriwi
Occasional Observer

Umgekehrt hat es auch keine Wirkung

<RULE when="ONLOCK">
<WITH>
<EQUAL>
<PROPERTY name="VALUE" source="st_pageType"/>
<TEXT>pt_resp_nutrition_calculator</TEXT>
</EQUAL>
</WITH>
<DO>
<NOT>
<PROPERTY name="VISIBLE" source="st_seo_background"/>
</NOT>
</DO>
</RULE>

0 Kudos
hoebbel
Crownpeak employee

Hallo Christiane,

wenn ich es richtig sehe, spielen hier zwei Probleme rein.

1) Du benutzt ONLOCK - die Regel wird also beim Bearbeiten des Formulars einmalig ausgeführt. Zu dem Zeitpunkt ist das Ergebnis des Value Service aber noch nicht da, also wird das Feld nicht sichtbar. Wenn der Value Service dann den Wert geholt und über die andere Regel gesetzt hat, ist es zu spät.
Hinweis: Wenn diese Annahme stimmt, sollte es klappen, wenn Du speicherst, das Bearbeiten beendest und dann das Bearbeiten neu startest (dann ist der Wert ja schon da, Änderungen auf der Seite wirken dann aber erst wieder beim erneuten Bearbeiten.
Lösung hierfür: Das ONLOCK entfernen (dann sollte das Feld nach einigen Millisekunden sichtbar werden)

2) Du benutzt IF (im ersten Post). Das führt dazu, dass die Regel nur ausgeführt wird, wenn das IF Statement zutrifft. Trifft es nicht zu, wird die Regel nicht erneut ausgeführt, die Eingabekomponente wird also gegebenenfalls nicht wieder ausgeblendet, wenn auf der Seite etwas geändert wird. (Spielt im Moment noch keine Rolle wegen 1)
Lösung: Die beiden Bedingungen im WHEN Abschnitt der Regel verknüpfen

Viele Grüße
Holger

0 Kudos
chriwi
Occasional Observer

Vielen Dank. Das ONLock war die Ursache.
Dann geht es auch einfacher und funktioniert.


<RULE>
<WITH>
<PROPERTY name="EMPTY" source="st_pageType"/>
</WITH>
<DO>
<PROPERTY name="VISIBLE" source="st_seo_background"/>
</DO>
</RULE>

VG Christiane.

0 Kudos