Prinzessin
I'm new here

Abhängig von Combobox-Eintrag GUI-Element über Rules ein-/ausblenden a

Jump to solution

Hallo, ich habe in den Datenquellen ein Formular mit zwei Eingabefeldern:
- Combobox mit Werten
- Textfeld (hidden = yes)

<CMS_MODULE>

<CMS_INPUT_COMBOBOX name="cs_typ" useLanguages="no">
<ENTRIES>
<ENTRY value="">
<LANGINFOS>
<LANGINFO lang="*" label="none"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="big_teaser">
<LANGINFOS>
<LANGINFO lang="*" label="Big teaser"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="hotspot">
<LANGINFOS>
<LANGINFO lang="*" label="Hotspot"/>
</LANGINFOS>
</ENTRY>
</ENTRIES>
<LANGINFOS>
<LANGINFO lang="*" label="Viewport type" description="Please choose the viewport type."/>
</LANGINFOS>
</CMS_INPUT_COMBOBOX>

<CMS_INPUT_TEXT name="cs_headline" hFill="yes" hidden="yes" singleLine="no" useLanguages="yes">
<LANGINFOS>
<LANGINFO lang="*" label="Headline" description="Insert the headline."/>
</LANGINFOS>
</CMS_INPUT_TEXT>
....

Ich habe nun eine Regel definiert, dass das Element cs_headline nur eingeblendet wird, wenn der Eintrag "big_teaser" in der Combobox gewählt wurde:


<RULES>
<ON_EVENT>
<WITH>
<NOT>
<EQUAL>
<PROPERTY source="cs_typ" name="VALUE"/>
<TEXT>big_teaser</TEXT>
</EQUAL>
</NOT>
</WITH>
<DO>
<PROPERTY source='cs_headline' name='VISIBLE'/>
</DO>
</ON_EVENT>
</RULES>

Leider funktioniert diese Regel nicht. Weiß jemand, was hier nicht passt?

11 Replies

Jetzt habe ich das Problem verstanden (denke ich) Smiley Happy

Es ist eben kein WENN-DANN, was hier bereitgestellt wird. Der WITH-Teil ist keine Vorbedingung. Es geht darum, den unter WITH ermittelten Wert im DO-Teil als Eingabewert zu verwenden. Um bei der Combobox zu bleiben, hier kann man beispielsweise im WITH-Teil den aktuellen Wert auslesen (also ohne Vergleichsoperatoren) und in ein anderes Feld übertragen. In den Beispielen zu dynamischen Formularen (ein entsprechendes Projekt wird meines Wissens nach mit FS ausgeliefert) findet sich unter anderem ein Lieferant-Ware-Szenario, bei dem der Inhalt der zweiten Combobox (Ware) durch die Auswahl in der ersten Combobox (Lieferant) bestimmt wird.

Dementsprechend ist obige Regel im Grunde ein Ermitteln des Befüllt-Standes (nicht-leer => wahr) und das Setzen der Validität für eine Komponente, basierend auf dem ermittelten Wahrheitswert.

Es gibt übrigens auch eine Vorbedingung, die für die Ausführung einer Regel erfüllt sein muss. Diese wird über einen IF-Teil ermöglicht. Die Semantik ist jedoch anders, denn ohne Ausführung der Regel wird ja der Wert bzgl. Validität nicht gesetzt. In obigem Fall wäre somit, wenn das Feld einmal nicht leer war, das Feld fortan immer valide.

Hoffe, das bringt ein wenig Licht ins Dunkel.

Gruß, Stefan

0 Kudos

Hallo, vielen Dank für die Hilfe. Es funktioniert nun 🙂

Allerdings hatte ich noch einen Fehler im Formular. Hier stand mein GUI-Element cs_headline auf "hidden" sodass es nicht erschien. Das habe ich nun entfernt und jetzt kann das Feld ein-/ausgeblendet werden.

0 Kudos