dalthoff
I'm new here

allowEmpty per RULES setzen

Jump to solution

Hallo zusammen,

ich bin noch nicht sonderlich tief in der Materie bei den Formularen, möchte aber etwas Dynamik in der Darstellung und Benutzung haben.

Mein Problem ist, dass ich für ein FS_REFERENCE-Element das Feld "allowEmpty" dynamisch setzen möchte, abhängig von einer anderen gewählten Checkbox. Hier meine bisherige Regel:

<RULES>

    <ON_EVENT>

        <WITH>

            <PROPERTY source="pt_use_mediafile" name="VALUE" />

        </WITH>

        <DO>

            <PROPERTY source="pt_mediafile" name="VISIBLE"/>

        </DO>

    </ON_EVENT>

    <ON_SAVE>

        <IF>

            <AND>

                <PROPERTY source="pt_use_mediafile" name="VALUE" />

            </AND>

        </IF>

        <WITH>

            <NOT>

                <PROPERTY source="pt_mediafile" name="EMPTY" />

            </NOT>

        </WITH>

        <DO>

            <VALIDATION>

                <PROPERTY source="pt_mediafile" name="VALID"/>

                <MESSAGE lang="*" text="Es muss eine Datei aus der Medienverwaltung verknüpft sein!"/>

            </VALIDATION>

        </DO>

    </ON_SAVE>

</RULES>

Hier meine Definition im Formular:

      <CMS_INPUT_TOGGLE name="pt_use_mediafile" allowEmpty="no" hFill="yes" singleLine="no">

        <LANGINFOS>

          <LANGINFO lang="*" label="Datei aus Medienstruktur verwenden" description="some description"/>

        </LANGINFOS>

        <OFF>

          <LANGINFO lang="*" label="Ja"/>

        </OFF>

        <ON>

          <LANGINFO lang="*" label="Nein"/>

        </ON>

      </CMS_INPUT_TOGGLE>

      <FS_REFERENCE name="pt_mediafile" hFill="yes">

        <FILTER>

          <ALLOW type="media"/>

        </FILTER>

        <LANGINFOS>

          <LANGINFO lang="*" label="Mediendatei"/>

        </LANGINFOS>

        <PROJECTS>

          <LOCAL name=".">

            <SOURCES>

              <FOLDER name="root" store="mediastore"/>

            </SOURCES>

          </LOCAL>

        </PROJECTS>

      </FS_REFERENCE>

Wenn ich jetzt in einem Formular die Checkbox auswähle, wird (wie gewollt) das FS_REFERENCE-Feld angezeigt und als ungültig validiert. Sobald ich hier eine Datei auswähle, ist dieses Feld auch wieder gültig.

Mein Problem: wenn ich jetzt aber die Dateireferenz lösche (dafür gibt es das kleine "X" ja) und danach die Checkbox deselektiere, wird mir noch immer ein invalides Feld aufgeführt, dies ist natürlich nicht so gewollt.

Ich habe natürlich bereits die Suche genutzt und bin auf diesen Eintrag gestoßen, dieser hat mir aber nicht weitergeholfen.

Was mache ich falsch? Ist das vielleicht ein Bug?

Labels (1)
Tags (1)
0 Kudos
1 Solution

Accepted Solutions
jan-tilo
I'm new here

Re: allowEmpty per RULES setzen

Jump to solution

Hallo Danny,

Dein Problem ist, dass Du eine IF Anweisung nutzt. Dies bedeutet, dass Deine Regel nur ausgeführt wird, wenn die Checkbox auf TRU steht. Setzt Du die Checkbox auf FALSE, läuft die Regel nicht mehr, somit bleibt das Feld ungültig.

Der Wert der Checkbox muss Teil Deiner Wertermittlung (WITH) werden.

<ON_SAVE>
        <WITH>              

            <NOT>

               <AND>

                 <PROPERTY source="pt_use_mediafile" name="VALUE" />
                 <PROPERTY source="pt_mediafile" name="EMPTY" />

               </AND>
            </NOT>
         
        </WITH>
        <DO>
            <VALIDATION>
                <PROPERTY source="pt_mediafile" name="VALID"/>
                <MESSAGE lang="*" text="Es muss eine Datei aus der Medienverwaltung verknüpft sein!"/>
            </VALIDATION>
        </DO>
    </ON_SAVE>

View solution in original post

0 Kudos
2 Replies
jan-tilo
I'm new here

Re: allowEmpty per RULES setzen

Jump to solution

Hallo Danny,

Dein Problem ist, dass Du eine IF Anweisung nutzt. Dies bedeutet, dass Deine Regel nur ausgeführt wird, wenn die Checkbox auf TRU steht. Setzt Du die Checkbox auf FALSE, läuft die Regel nicht mehr, somit bleibt das Feld ungültig.

Der Wert der Checkbox muss Teil Deiner Wertermittlung (WITH) werden.

<ON_SAVE>
        <WITH>              

            <NOT>

               <AND>

                 <PROPERTY source="pt_use_mediafile" name="VALUE" />
                 <PROPERTY source="pt_mediafile" name="EMPTY" />

               </AND>
            </NOT>
         
        </WITH>
        <DO>
            <VALIDATION>
                <PROPERTY source="pt_mediafile" name="VALID"/>
                <MESSAGE lang="*" text="Es muss eine Datei aus der Medienverwaltung verknüpft sein!"/>
            </VALIDATION>
        </DO>
    </ON_SAVE>

0 Kudos
dalthoff
I'm new here

Re: allowEmpty per RULES setzen

Jump to solution

Vielen Dank,

ich wusste irgendwas offensichtliches war bei mir falsch.

Funktioniert auf Anhieb!

0 Kudos