Search the FirstSpirit Knowledge Base
Hallo,
ich habe ein Textfeld "st_name" in einem Formular, welches ich abhängig von einer ON_EVENT-Regel ein- und ausblende. Wenn das Textfeld angezeigt wird, soll es auch ein Pflichtfeld sein. Dazu habe ich allowEmpty="yes" gesetzt und möchte die dynamische Prüfung über eine Regel steuern, was mir jedoch nicht gelingen mag.
Nachfolgende nicht funktionierende Ansätze hatte ich bislang:
1. Mit IF:
<ON_SAVE>
<IF>
<PROPERTY source="st_name" name="VISIBLE"/>
</IF>
<WITH>
<NOT>
<PROPERTY source="st_name" name="EMPTY"/>
</NOT>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="st_name" name="VALID"/>
<MESSAGE lang="*" text="A name must be provided!"/>
</VALIDATION>
</DO>
</ON_SAVE>
2: Ohne IF:
<ON_SAVE>
<WITH>
<AND>
<PROPERTY source="st_name" name="VISIBLE"/>
<NOT>
<PROPERTY source="st_name" name="EMPTY"/>
</NOT>
</AND>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="st_name" name="VALID"/>
<MESSAGE lang="*" text="A name must be provided!"/>
</VALIDATION>
</DO>
</ON_SAVE>
Beste Grüße
Sebastian Goeß
Und hier die Lösung:
<ON_SAVE>
<WITH>
<NOT>
<AND>
<PROPERTY source="st_name" name="VISIBLE"/>
<PROPERTY source="st_name" name="EMPTY"/>
</AND>
</NOT>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="st_name" name="VALID"/>
<MESSAGE lang="*" text="A name must be provided!"/>
</VALIDATION>
</DO>
</ON_SAVE>
Und hier die Lösung:
<ON_SAVE>
<WITH>
<NOT>
<AND>
<PROPERTY source="st_name" name="VISIBLE"/>
<PROPERTY source="st_name" name="EMPTY"/>
</AND>
</NOT>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="st_name" name="VALID"/>
<MESSAGE lang="*" text="A name must be provided!"/>
</VALIDATION>
</DO>
</ON_SAVE>
Ich habe einen ähnlichen Fall, mit folgender Lösung!
<ON_SAVE>
<WITH>
<NOT>
<AND>
<PROPERTY source="st_enddate" name="EMPTY"/>
<PROPERTY source="st_event" name="VALUE"/>
<TRUE/>
</AND>
</NOT>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="st_enddate" name="VALID"/>
<MESSAGE lang="*" text="A enddate must be provided!"/>
</VALIDATION>
</DO>
</ON_SAVE>
Ich hatte am Anfang auch beide Varianten wie du ausprobiert und es hatte nicht richtig funktioniert. Dann hier geschaut und mit deiner Lösung klappt es.
Warum bezieht sich das <NOT> nur auf die <PROPERTY> mit EMPTY und nicht auf beide Properties?
Hi,
das NOT bezieht sich auf das AND. Umgeschrieben lautet deine Werteermittlung oben:
not( st_enddate.isEmpty and st_event.value and true)
Ich nehme mal an, st_event ist eine Toggle-Komponente?
Beste Grüße
Stefan
Hi,
ja st_event ist eine Toggle-Komponente.
Wenn st_event TRUE ist, dann benötige ich st_enddate als Pflichtfeld.
Bei FALSE ist die Angabe optional.
Grüße
Henning
Hallo,
im Prinzip willst du hier also eine Implikation umsetzen:
st_event --> not( st_enddate.isEmpty )
Per Definition also:
not( st_event ) or not( st_enddate.isEmpty )
Nach De Morgan:
not( st_event and st_enddate.isEmpty )
Was deiner Regel entspricht (das TRUE ist hier nicht notwendig).
Beste Grüße
Stefan
Alles klar,
ja das TRUE war nicht notwendig!
Vielen Dank
Grüße
Henning