- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Label und Entries einer Combobox auslesen
Hallo,
ich versuche, die Entry-Informationen (Values und Labels) einer CMS_INPUT_COMBOBOX auszulesen. Die Combobox sieht so aus:
<CMS_INPUT_COMBOBOX name="st_filter0" hFill="yes" singleLine="no" useLanguages="no">
<ENTRIES>
<ENTRY value="1">
<LANGINFOS>
<LANGINFO lang="*" label="Ein-Zรคhler-Messung"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="2">
<LANGINFOS>
<LANGINFO lang="*" label="Zwei-Zรคhler-Messung"/>
</LANGINFOS>
</ENTRY>
</ENTRIES>
<LANGINFOS>
<LANGINFO lang="*" label="Filter 1"/>
</LANGINFOS>
</CMS_INPUT_COMBOBOX>
Ich habe versucht mit
$CMS_VALUE(#global.page.getFormData.getForm().findEditor("st_filter0").getEntries().getLangInfos().label())$
an die Werte fรผr die Label zu kommen, aber ich denke, da fehlt mir noch ein Index. Auf jeden Fall hatte ich bisher noch keinen Erfolg. Ich bin leider nicht in JAVA bewandert, deswegen hilft mir die API-Dokumentation auch nur sehr rudimentรคr weiter.
Vielleicht kann das ja ein Spezialist/eine Spezialistin aus dem รrmel schรผtteln?
Viele Grรผรe
Gabriele Reger
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Guten Morgen Gabriele,
ich fรผrchte, dann habe ich Dich missverstanden.
Du meinst also so etwas:
$CMS_SET(ST,#global.userService.getStore(class("de.espirit.firstspirit.access.store.Store$Type").TEMPLATESTORE,false).getSectionTemplates().getTemplate("NAME DES SECTIONTEMPLATES"))$
$CMS_FOR(for_entry,ST.getGomProvider().findEditor("st_filter0").getEntries())$
$CMS_FOR(for_langInfo,for_entry.getLangInfos())$
$CMS_VALUE(for_langInfo.getLabel())$<br>
$CMS_END_FOR$
$CMS_END_FOR$
Das sollte bei Dir dann
Ein-Zรคhler-Messung
Zwei-Zรคhler-Messung
ausgeben.
Die innere Schleife (รผber die lang-infos) wird gebraucht, da es ja fรผr jede Sprache eine eigene Beschriftung geben kann. Fรผr die Ausgabe des values braucht man die nicht, da reicht ein $CMS_VALUE(for_entry.getValue())$
Hinweis: Du musst รผber das Template und die dortige GOM Definition gehen, um alle Auswahlmรถglichkeiten zu bekommen. Im Absatz selber sind nur die ausgewรคhlten Eintrรคge gespeichert.
Da Du das Template ja bereits kennst, kannst Du dir das direkt holen. Ansonsten mรผsstest Du รผber die Eintrรคge des FS_CATALOG iterieren und dir von dort jeweils das template holen. Dann musst Du aber wiederum wissen, wie die gesuchte Eingabekomponente in dem jeweiligen Template heiรt...
Viele Grรผรe,
Holger
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Gabriele,
das ist zu kompliziert gedacht.
Nimm einfach
$CMS_VALUE(st_filter0.label(#global.language))$
Viele Grรผรe,
Holger
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Gabriele,
eigentlich sollte das recht einfach sein:
$CMS_VALUE(st_filter0.getLabel(#global.language))$
bzw. sicherheitshalber
$CMS_VALUE(st_filter0.getLabel(#global.language).convert2)$
Hintergrund: Der Wert einer Combobox ist ja eine Option. Erkennbar ist das immer im grauen Kasten rechts oben bei "zu den Methoden":
Der Link "Option" fรผhrt auf die "komprimierte" Doku zu Option, wo Du dann auch die Methode .getLabel(language) findest:
Alternativer Weg: Im "richtigen" ApiDoc zur Option findet man zwar "direkt" am Interface keine Methoden zu Labels, es erbt allerdings vom Interface Label
Das hat dann genau diese zwei .getLabel(...)-Methoden - inklusive ein bisschen Erklรคrungstext zum Fallback-Verhalten.
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo und Danke fรผr eure Antworten!
Ich vergaร zu erwรคhnen, dass die Combobox innerhalb eines FS_CATALOG zur Verfรผgung gestellt wird, d.h. ich befinde mich auรerhalb der eigentlichen Vorlage und wollte รผber ein Render-Template arbeiten, BEVOR die Sections aus dem FS_CATALOG abgearbeitet werden. Aber vielleicht ist das ja doch zu kompliziert gedacht. รbrigens ist in meiner Doku getLabel als deprecated gekennzeichnet....
Viele Grรผรe
Gabriele Reger
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Gabriele,
Du willst also mit Templatemitteln das Label einer CMS_INPUT_COMBOBOX ausgeben, die sich in einem Absatz in einem FS_CATALOG befindet. Nehmen wir an, die CATALOG Eingabekomponente ist do definiert:
<FS_CATALOG name="pt_catalog">
<LANGINFOS>
<LANGINFO lang="*" label="catalog"/>
</LANGINFOS>
<TEMPLATES type="section"/>
</FS_CATALOG>
und die COMBOBOX ist die aus dem ursprรผnglichen Post.
Dann mรผsste das so klappen:
$CMS_FOR(for_card,pt_catalog)$
$CMS_VALUE(for_card.item.st_filter0.label(#global.language))$
$CMS_END_FOR$
Ich hoffe, dass Dir das weiterhilft.
Viele Grรผรe,
Holger
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Holger,
vielen Dank fรผr deine Mรผhe!.
Es ist aber tatsรคchlich so, dass ich auf diesem Weg alle gesetzten Werte auslese und nicht die reine Information aus dem Label. D.h. ein Wert, der innerhalb des FS_CATALOG nicht ausgewรคhlt ist, den bekomme ich auf รผber diese Methode auch nicht. Auรerdem werden natรผrlich auch Werte mehrfach geliefert, aber das kann man ja abfangen.
Wahrscheinlich kann ich auch damit weiter arbeiten, aber m.E. sollte es ja auch mรถglich sein, einfach die reine Information aus dem Aufbau der Eingabekomponente zu verarbeiten. Irgendwo muss diese Info doch stehen bzw. verarbeitbar sein.
Viele Grรผรe
Gabriele Reger
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Guten Morgen Gabriele,
ich fรผrchte, dann habe ich Dich missverstanden.
Du meinst also so etwas:
$CMS_SET(ST,#global.userService.getStore(class("de.espirit.firstspirit.access.store.Store$Type").TEMPLATESTORE,false).getSectionTemplates().getTemplate("NAME DES SECTIONTEMPLATES"))$
$CMS_FOR(for_entry,ST.getGomProvider().findEditor("st_filter0").getEntries())$
$CMS_FOR(for_langInfo,for_entry.getLangInfos())$
$CMS_VALUE(for_langInfo.getLabel())$<br>
$CMS_END_FOR$
$CMS_END_FOR$
Das sollte bei Dir dann
Ein-Zรคhler-Messung
Zwei-Zรคhler-Messung
ausgeben.
Die innere Schleife (รผber die lang-infos) wird gebraucht, da es ja fรผr jede Sprache eine eigene Beschriftung geben kann. Fรผr die Ausgabe des values braucht man die nicht, da reicht ein $CMS_VALUE(for_entry.getValue())$
Hinweis: Du musst รผber das Template und die dortige GOM Definition gehen, um alle Auswahlmรถglichkeiten zu bekommen. Im Absatz selber sind nur die ausgewรคhlten Eintrรคge gespeichert.
Da Du das Template ja bereits kennst, kannst Du dir das direkt holen. Ansonsten mรผsstest Du รผber die Eintrรคge des FS_CATALOG iterieren und dir von dort jeweils das template holen. Dann musst Du aber wiederum wissen, wie die gesuchte Eingabekomponente in dem jeweiligen Template heiรt...
Viele Grรผรe,
Holger
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Das war's. Danke Holger fรผr deine Mรผhe!

