markusbucher
I'm new here

Rules: EMPTY-Abfrage bei Checkbox

Jump to solution

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

1 Solution

Accepted Solutions

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

View solution in original post

0 Kudos
8 Replies
StefanSchulz
I'm new here

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>

air11.PNG

Was mache ich hier noch falsch?

Danke und Gruß

Markus

0 Kudos

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

0 Kudos

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

0 Kudos

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

0 Kudos

Hi,

wie mache ich ein ODER in den Rules? Ich kenne nur AND.

Gruß

Markus

0 Kudos

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>