Search the FirstSpirit Knowledge Base
Hallo,
ich bilde eine Regel ab:
Formular:
<CMS_MODULE>
<CMS_INPUT_TOGGLE name="st_enable" useLanguages="yes">
<LANGINFOS>
<LANGINFO lang="*" label="Enable Element in this language"/>
</LANGINFOS>
</CMS_INPUT_TOGGLE>
<CMS_GROUP name="st_content">
<CMS_INPUT_TEXT name="st_text">
<LANGINFOS>
<LANGINFO lang="*" label="Text, mandatory"/>
</LANGINFOS>
</CMS_INPUT_TEXT>
</CMS_GROUP>
</CMS_MODULE>
Regel:
<RULES>
<ON_EVENT>
<WITH>
<NOT>
<PROPERTY name="EMPTY" source="st_enable"/>
</NOT>
</WITH>
<DO>
<PROPERTY name="VISIBLE" source="#form.st_content"/>
</DO>
</ON_EVENT>
<ON_SAVE>
<IF>
<AND>
<NOT>
<PROPERTY name="EMPTY" source="st_enable"/>
</NOT>
</AND>
</IF>
<WITH>
<AND>
<NOT>
<PROPERTY name="EMPTY" source="st_text"/>
</NOT>
</AND>
</WITH>
<DO>
<VALIDATION>
<PROPERTY name="VALID" source="st_text"/>
<MESSAGE lang="*" text="The editor must not be empty!"/>
<MESSAGE lang="DE" text="Der Editor darf nicht leer sein!"/>
</VALIDATION>
</DO>
</ON_SAVE>
</RULES>
Sobald ich aber den Wert der Checkbox einmal gesetzt habe reagiert sie nicht mehr auf das unchecken, die Regel aktualisiert sich nicht und die CMS_GROUP bleibt sichtbar. Was mache ich falsch?
Danke euch,
Markus
Ich glaube doch. Aber die Werteermittlung ist verkehrt. Du benötigst wohl ein not(st_enable) or not(st_text.empty).
Beste Grüße
Stefan
Hallo Markus,
das Problem ist die Werteermittlung für den Sichtbarkeitszustand. Das Toggle ist nur einmal EMPTY, und zwar zu Anfang dessen Lebenszeit, wenn noch kein Wert ausgewählt ist. Hier wird die Abfrage des VALUE des Toggle benötigt. Allerdings wird der Leerwert nicht als "falsch" ausgewertet, deshalb muss eine Kombination her:
<RULES>
<ON_EVENT>
<WITH>
<AND>
<NOT>
<PROPERTY name="EMPTY" source="st_enable"/>
</NOT>
<PROPERTY name="VALUE" source="st_enable"/>
</AND>
</WITH>
<DO>
<PROPERTY name="VISIBLE" source="#form.st_content"/>
</DO>
</ON_EVENT>
</RULES>
Beste Grüße
Stefan
Servus Stefan,
danke für deine Antwort. Das löst das Sichtbar/Verstecken-Problem. Leider ist damit die Validierung noch nicht erfüllt:
<RULES>
<ON_EVENT>
<WITH>
<AND>
<NOT>
<PROPERTY name="EMPTY" source="st_enable"/>
</NOT>
<PROPERTY name="VALUE" source="st_enable"/>
</AND>
</WITH>
<DO>
<PROPERTY name="VISIBLE" source="#form.st_content"/>
</DO>
</ON_EVENT>
<ON_SAVE>
<IF>
<AND>
<NOT>
<PROPERTY name="EMPTY" source="st_enable"/>
</NOT>
<PROPERTY name="VALUE" source="st_enable"/>
</AND>
</IF>
<WITH>
<AND>
<PROPERTY name="VALUE" source="st_enable"/>
<NOT>
<PROPERTY name="EMPTY" source="st_text"/>
</NOT>
</AND>
</WITH>
<DO>
<VALIDATION>
<PROPERTY name="VALID" source="st_text"/>
<MESSAGE lang="*" text="The editor must not be empty!"/>
<MESSAGE lang="DE" text="Der Editor darf nicht leer sein!"/>
</VALIDATION>
</DO>
</ON_SAVE>
</RULES>
Was mache ich hier noch falsch?
Danke und Gruß
Markus
Die Validierung wird laut den Regeln nur ausgeführt, wenn der IF-Teil erfüllt ist. Das verhält sich wie ein IF in allen üblichen Programmiersprachen. Statt des IF-Teils muss die Bedingung für deinen Fall in die Werte-Ermittlung (WITH-Teil) eingehen.
Beste Grüße
Stefan
Leider ändert das nichts daran, dass das unchecken die Validierung nicht neu anstößt.Auch wenn ich die Ausblendelogik rausnehme wird der Status beim Unchecken nicht aktualisiert, das Element ist nicht speicherbar.
Gruß
Markus
Ich glaube doch. Aber die Werteermittlung ist verkehrt. Du benötigst wohl ein not(st_enable) or not(st_text.empty).
Beste Grüße
Stefan
Hi,
wie mache ich ein ODER in den Rules? Ich kenne nur AND.
Gruß
Markus
Mit OR
Das war jetzt peinlich. Danke
Es funktioniert! Vielen Dank an alle.
LG
Markus
<RULES>
<ON_EVENT>
<WITH>
<AND>
<NOT>
<PROPERTY name="EMPTY" source="st_enable"/>
</NOT>
<PROPERTY name="VALUE" source="st_enable"/>
</AND>
</WITH>
<DO>
<PROPERTY name="VISIBLE" source="#form.st_content"/>
<PROPERTY name="VISIBLE" source="st_text"/>
</DO>
</ON_EVENT>
<ON_SAVE>
<IF>
<AND>
<NOT>
<PROPERTY name="EMPTY" source="st_enable"/>
</NOT>
</AND>
</IF>
<WITH>
<OR>
<NOT>
<PROPERTY name="VALUE" source="st_enable"/>
</NOT>
<PROPERTY name="VALUE" source="st_text"/>
</OR>
</WITH>
<DO>
<VALIDATION>
<PROPERTY name="VALID" source="st_text"/>
<MESSAGE lang="*" text="The editor must not be empty!"/>
<MESSAGE lang="DE" text="Der Editor darf nicht leer sein!"/>
</VALIDATION>
</DO>
</ON_SAVE>
</RULES>