Guten Tag,
für die Validierung eines Feldes möchte ich prüfen ob dieses Feld leer ist. Wenn dem so ist, dann wird der Scope des aktuellen Projekts überprüft (wird auf ein Inter- und Intranet-System deployt). Dazu muss auf ein Modul und damit auf das SCHEDULE-tag zurückgegriffen werden. Die Regel sieht folgendermaßen aus:
<RULES>
<RULE>
<SCHEDULE delay="0" id="schedule_scope28" service="IsProject">
<CONDITION>
<PROPERTY name="EMPTY" source="pt_description"/>
</CONDITION>
<PARAM name="project">
<TEXT>internet</TEXT>
</PARAM>
</SCHEDULE>
<DO>
<NOT>
<VALIDATION scope="SAVE">
<PROPERTY name="VALID" source="pt_description"/>
<MESSAGE lang="*" text="Die Description darf nicht leer sein!"/>
</VALIDATION>
</NOT>
</DO>
</RULE>
</RULES>
Die Condition prüft also vor der Ausführung erstmal, ob das Feld überhaupt leer ist. "pt_description" ist eine CMS_INPUT_TEXT-Eingabekomponente.
Problem: Die Validierung schlägt immer fehl. Auch wenn ich das besagte Feld befülle.
Hinweis: Wird die Condition negiert, so ist die Validierung bei leerem Feld - erwartungsgemäß - in Ordnung. Wird das Feld dann befüllt, so schlägt die Validierung - erwartungsgemäß - fehl. Wird nach der Befüllung der Inhalt wieder gelöscht, so schlägt die Validierung immer noch fehl...
Die momentan funktionierende Lösung arbeitet mit zwei Regeln. Eine Regel, die anhand des Schedules ein verstecktes Feld setzt. Dieses wird dann in einer zweiten Regel abgefragt und bei vorhandenem Inhalt wird "pt_description" auf EMPTY überprüft. Eine recht unschöne Lösung.
Frage: Übersehe ich Implikationen im Code, die genau dieses Verhalten verursachen? Gibt es eine "1-Regel-Lösung" mit Schedule?