th_biedermann
Occasional Collector

CMS_INPUT_TOGGLE auswerten und ein anderes Feld zu Pflichtfeld machen.

Jump to solution

Hallo zusammen

Ich muss ein "CMS_INPUT_TOGGLE" per Regel auswerten und das Feld "st_initiativeApplicationUrl" zum Pflichtfeld machen wenn TRUE. Wie mach ich sowas?

<CMS_INPUT_TOGGLE
name="st_showInitiativeApplication"
allowEmpty="yes"
hFill="yes"
preset="copy"
singleLine="no"
useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Show initiative application"/>
<LANGINFO lang="DE" label="Initiativbewerbungslink anzeigen"/>
</LANGINFOS>
</CMS_INPUT_TOGGLE>

 

Mein Versuch derRegel:

<ON_EVENT>
<IF>
<PROPERTY name="VALUE" source="st_showInitiativeApplication"/>
</IF>
<DO>
<NOT>
<VALIDATION scope="SAVE">
<PROPERTY name="VALID" source="st_initiativeApplicationUrl"/>
<MESSAGE lang="*" text="Please enter the Initiavie Application URL"/>
<MESSAGE lang="DE" text="Bitte geben Sie die Initiativbewerbungs URL ein!"/>
</VALIDATION>
</NOT>
</DO>
</ON_EVENT>

 

0 Kudos
1 Solution

Accepted Solutions
hoebbel
Crownpeak employee

Hallo Thomas,

um ein Feld zum Pflichtfeld machen zu können, musst Du auch prüfen, ob es leer ist und nur dann die Regel aktiv werden lassen. Außerdem muss im WITH definiert werden, wann die Regel aktiv ist.

Schließlich ist es keine gute Idee mit einem IF etwas zu prüfen, das der Redakteur beeinflussen kann. Das bedeutet nämlich, dass die Regel nur ausgeführt wird, wenn der IF Teil zutrifft. Klingt auf den ersten Blick so, als würde man das haben wollen. In der Praxis stellt man dann aber schnell fest, dass das nicht der Fall ist, da eine Pflichtfeldregel beispielsweise auch ausgeführt werden muss, um den Fehlerstatus wieder los zu werden.

Langer Rede, kurz Sinn: Einfach im WITH prüfen, ob der TOGGLE gesetzt ist und das entsprechende Pflichtfeld leer ist. Wenn nicht, dann den Fehlertext anzeigen. Nun noch berücksichtigen, dass die Logik für das WITH "anders" herum ist.

Dann kommt als Regel beispielsweise so etwas heraus:

	<RULE>
		<WITH>
			<OR>
				<NOT>
					<PROPERTY name="VALUE" source="st_showInitiativeApplication"/>
				</NOT>
				<NOT>
					<PROPERTY name="EMPTY" source="st_initiativeApplicationUrl"/>
				</NOT>
			</OR>
		</WITH>
		<DO>
			<VALIDATION>
				<PROPERTY name="VALID" source="st_initiativeApplicationUrl"/>
				<MESSAGE lang="*" text="Please enter the Initiavie Application URL"/>
				<MESSAGE lang="DE" text="Bitte geben Sie die Initiativbewerbungs URL ein!"/>
			</VALIDATION>
		</DO>
	</RULE>

Viele Grüße,
Holger

View solution in original post

0 Kudos
2 Replies
hoebbel
Crownpeak employee

Hallo Thomas,

um ein Feld zum Pflichtfeld machen zu können, musst Du auch prüfen, ob es leer ist und nur dann die Regel aktiv werden lassen. Außerdem muss im WITH definiert werden, wann die Regel aktiv ist.

Schließlich ist es keine gute Idee mit einem IF etwas zu prüfen, das der Redakteur beeinflussen kann. Das bedeutet nämlich, dass die Regel nur ausgeführt wird, wenn der IF Teil zutrifft. Klingt auf den ersten Blick so, als würde man das haben wollen. In der Praxis stellt man dann aber schnell fest, dass das nicht der Fall ist, da eine Pflichtfeldregel beispielsweise auch ausgeführt werden muss, um den Fehlerstatus wieder los zu werden.

Langer Rede, kurz Sinn: Einfach im WITH prüfen, ob der TOGGLE gesetzt ist und das entsprechende Pflichtfeld leer ist. Wenn nicht, dann den Fehlertext anzeigen. Nun noch berücksichtigen, dass die Logik für das WITH "anders" herum ist.

Dann kommt als Regel beispielsweise so etwas heraus:

	<RULE>
		<WITH>
			<OR>
				<NOT>
					<PROPERTY name="VALUE" source="st_showInitiativeApplication"/>
				</NOT>
				<NOT>
					<PROPERTY name="EMPTY" source="st_initiativeApplicationUrl"/>
				</NOT>
			</OR>
		</WITH>
		<DO>
			<VALIDATION>
				<PROPERTY name="VALID" source="st_initiativeApplicationUrl"/>
				<MESSAGE lang="*" text="Please enter the Initiavie Application URL"/>
				<MESSAGE lang="DE" text="Bitte geben Sie die Initiativbewerbungs URL ein!"/>
			</VALIDATION>
		</DO>
	</RULE>

Viele Grüße,
Holger

0 Kudos
hoebbel
Crownpeak employee

UPS - bei der VALIDATION fehlt natürlich der SCOPE="save": <VALIDATION scope="save">

0 Kudos