Search the FirstSpirit Knowledge Base
Hallo,
ich habe eine CMS_INPUT_TOGGLE (checkbox) und ein CMS_INPUT_TEXTAREA. Die Idee ist, WENN die Checkbox angehakt ist DANN soll die Textarea ein pflichfeld sein.
Hier einmal mein dazugehöriger Code:
<CMS_INPUT_TOGGLE
name="cs_isTopTag"
type="checkbox"
allowEmpty="no"
hFill="yes"
preset="default"
singleLine="yes"
useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Tag is Key-Note-Theme?"/>
<LANGINFO lang="DE" label="Tag ist Top-Thema?"/>
</LANGINFOS>
</CMS_INPUT_TOGGLE>
<CMS_INPUT_TEXTAREA
name="cs_introtext"
convertEntities="standard"
hFill="yes"
maxInputLength="500"
rows="6"
useLanguages="yes">
<LANGINFOS>
<LANGINFO lang="*" label="Introductional text"/>
<LANGINFO lang="DE" label="Introtext"/>
</LANGINFOS>
</CMS_INPUT_TEXTAREA>
<RULE>
<IF>
<PROPERTY name="VALUE" source="cs_isTopTag"/>
</IF>
<WITH>
<NOT>
<PROPERTY name="EMPTY" source="cs_introtext"/>
</NOT>
</WITH>
<DO>
<VALIDATION scope="RELEASE">
<PROPERTY name="VALID" source="cs_introtext"/>
<MESSAGE lang="*" text="You have to fill in this field."/>
<MESSAGE lang="DE" text="Sie müssen dieses Feld pflegen."/>
</VALIDATION>
</DO>
</RULE>
Grundlegend funktioniert es genau so wie ich es mir vorstelle. Wenn ich den Datensatz in den Bearbeitungsmodus nehme und dich checkbox anhake wird die Textarea als Pflichfeld markiert. Wenn ich nun aber den Haken aus der Checkbox entferne verschwindet der Hinweis leider nicht wieder. Erst wenn ich aus dem Bearbeitungsmodus gehe wird der Hinweis entfernt.
Ich habe diesem Post hier mal noch ein kleines Video angehangen wo ich das Problem zeige.
Ich habe leider keine weiteren Ideen woran es liegt.
Kann mir jemand bitte weiter helfen?
Gruß
Sebastian
Vielen Dank.
Das war tatsächlich die Lösung. Hier nochmal falls jemand das gleiche Problem hat, meine Lösung:
<RULE>
<WITH>
<OR>
<AND>
<NOT>
<PROPERTY name="EMPTY" source="cs_introtext"/>
</NOT>
</AND>
<NOT>
<PROPERTY name="VALUE" source="cs_isTopTag"/>
</NOT>
</OR>
</WITH>
<DO>
<VALIDATION scope="RELEASE">
<PROPERTY name="VALID" source="cs_introtext"/>
<MESSAGE lang="*" text="You have to fill in this field."/>
<MESSAGE lang="DE" text="Sie müssen dieses Feld pflegen."/>
</VALIDATION>
</DO>
</RULE>
Hallo Sebastian,
Du hast Dir eine klassische "Einbahnstraßenregel" gebaut. Wenn das IF false zurück liefert, wird die Bearbeitung der Regel bis zum nächsten Event komplett unterdrückt. Eine Validierungsregel sollte immer in beide Richtungen funktionieren, d.h. auch den Status zurück auf "gültig" setzen können. Wenn Du im Status "invalide" den Haken raus nimmst, wird die Regel aber sofort deaktiviert und kann die VALID Property nicht mehr auf true setzen. Siehe auch hier und hier.
Lösung: Abfrage des Toggle mit ins WITH integrieren. Da ein Toggle drei Zustände haben kann (true, false und null) sollte man übrigens immer explizit gegen TRUE prüfen.
Das WITH/DO bildet keine Wenn/Dann-Logik ab sondern ist eine Wertezuweisung.
Viele Grüße
Michael
Vielen Dank.
Das war tatsächlich die Lösung. Hier nochmal falls jemand das gleiche Problem hat, meine Lösung:
<RULE>
<WITH>
<OR>
<AND>
<NOT>
<PROPERTY name="EMPTY" source="cs_introtext"/>
</NOT>
</AND>
<NOT>
<PROPERTY name="VALUE" source="cs_isTopTag"/>
</NOT>
</OR>
</WITH>
<DO>
<VALIDATION scope="RELEASE">
<PROPERTY name="VALID" source="cs_introtext"/>
<MESSAGE lang="*" text="You have to fill in this field."/>
<MESSAGE lang="DE" text="Sie müssen dieses Feld pflegen."/>
</VALIDATION>
</DO>
</RULE>