ncbruckner
Returning Observer

Auslesen einer Comobox aus Datenquelle in ValueService

Hallo zusammen,

ich habe ein Formular, in dem eine Combobox existiert, die aus einer Datenquelle befüllt wird. Ich möchte jetzt gern in den Regeln prüfen, ob der ausgewählte Wert bestimmten Kriterien entspricht. Dazu muss ich aber irgendwie an das Dataset rankommen und dabei stelle ich mich anscheinend gerade doof an.

Ich rufe den Valueservice wie folgt auf:

<RULE>
		<SCHEDULE delay="0" id="pt_page_tag" service="RuleService">
			<CONDITION>
				<PROPERTY name="FOCUS" source="pt_page_tag"/>
			</CONDITION>
			<PARAM name="tag">
				<PROPERTY name="ENTRY" source="pt_page_tag"/>
			</PARAM>
		</SCHEDULE>
		<DO>
			<VALIDATION>
				<PROPERTY name="VALID" source="pt_page_tag"/>
				<MESSAGE lang="*" text="Value is invalid"/>
			</VALIDATION>
		</DO>
	</RULE>

Der ValueService wird auch korrekt aufgerufen, ich erhalte als Tag allerdings nur die FS_ID des Datensatzes.

WIe komme ich damit jetzt am schnellsten an den echten Datensatz? Ich finde irgendwie keine Möglichkeit, mir mit der FS_ID allein direkt den Datensatz oder die Entity zu holen. Kann ich mir da irgendwie anders einen Wert übergeben? Übersehe ich was offensichtliches? Alle Datensätze holen und filtern ginge sicherlich, aber das scheint mir nicht der richtige Weg zu sein. So wenig Datensätze sind das auch gar nicht.

0 Kudos
3 Replies
mbergmann
Crownpeak employee

Hi,

hast du es mal mit VALUE statt ENTRY versucht?

Seit FirstSpirit 2024.8 können auch Werte komplexer Eingabekomponenten (z. B. FS_DATASETFS_REFERENCE) innerhalb einer ValueService-Implementierung verwendet werden.

Viele Grüße
Michael

 

0 Kudos
ncbruckner
Returning Observer

Hi,

Kunde ist leider noch auf 2023.8, gut zu wissen, dass das in Zukunft einheitlich ist.

Aber ich habe mein Problem gelöst gekriegt. Ich habe in der Combobox, die ich auslesen will, im Formular <KEY>name</KEY> gesetzt.

      <CMS_INPUT_COMBOBOX name="pt_page_tag" hFill="yes" singleLine="no" useLanguages="no">
        <CMS_INCLUDE_OPTIONS type="database">
          <LABELS>
            <LABEL lang="*">#item.name</LABEL>
          </LABELS>
          <KEY>name</KEY>
          <QUERY name="DB_local.tt_query_type_1"/>
          <TABLE>DB_local.tt_pagetags</TABLE>
        </CMS_INCLUDE_OPTIONS>
        <LANGINFOS>
          <LANGINFO lang="*" label="Page Tag"/>
        </LANGINFOS>
      </CMS_INPUT_COMBOBOX>

 
Jetzt gibt er mir den Namen des Datensatzes und damit kann ich über den QueryAgent ne Suche absetzen. Für meinen Usecase reicht mir das. Ist dann zwar ein anderer Ansatz als geplant, aber tut, was es soll.

Danke für die Hilfe.

Viele Grüße

Nina

0 Kudos
mbergmann
Crownpeak employee

Hallo Nina,

hmm, solange sichergestellt ist, dass das eindeutig ist… 

Du kannst aber auch eigene Parameter als Text übergeben, z.B. den Schemanamen und Tabellennamen (aka EntityType).

Damit kriegt man im ValueService dann per API eine Suche hin. So aus dem Bauch heraus würde ich das rein technisch für irgendwie „schöner“ halten…

Viele Grüße 

Michael

0 Kudos