Skip to main content

FS_INDEX Abfrage Value

Comments

16 comments

  • Zendesk API User
    Author: marza - 4/5/2016 11:06

    Hallo Thomas,

    bei Deinem Problem hilft immer ein Blick ins ODFS. Ein FS_INDEX gibt im Iterator Objekte vom Typ Record wieder. Alternativ hängt man an die Laufvariable im Template-Code ein .class an, dann müsste man den Klassennamen sehen.

    Wenn das Element eine Entity ist und eine eigene Tabellenvorlage hat (in dem die Entity ausgegeben wird), dann müsste eigentlich per $CMS_VALUE()$ dieses Template ausgegeben werden.

    Falls das nicht funktioniert, ich sehe gerade, ein Objekt vom Typ Record hat eine ToJSON-Methode. Man könnte sich also on-the-fly per CMS_SET ein neues Objekt erstellen lassen können, auf dass man, wie unter dem CMS_SET-ODFS-Eintrag beschrieben, zugreifen kann.

    Grüße Marian

    0
  • Zendesk API User
    Author: StefanSchulz - 4/6/2016 12:53

    Hi Thomas,

    für die iterative Abarbeitung der Index-Inhalte steht eine gesonderte Funktionalität zur Verfügung. Hierzu läuft die Schleife nicht über den Index direkt, sondern über dessen Eigenschaft values.

    In deinem Fall wie folgt:

    $CMS_FOR(item,_item.hostlist.values)$

    Die Variable item enthält dann in jedem Durchlauf direkt das Werteobjekt und der Zugriff mit item.ttName sollte reibungslos funktionieren.

    Beste Grüße

    Stefan

    0
  • Zendesk API User
    Author: thomas_ritter - 4/6/2016 13:16

    Hallo zusammen,

    zu Lösung Marian:

    habe es so leider nicht lösen können. Im JSON steht die Information die ich benötige nicht drin, sondern nur wenige Informationen zu jedem RECORD:


       "FS_GID":"c80cd0cc-e45c-4fd0-abd9-860564d19a1e",
       "shorturl":"test",
       "hostlist":"<CMS_VALUE name=\"ttHostList\" tag=\"FS_INDEX\"><LANG id=\"§\" set=\"1\"><INDEX><RECORD>{\"schema\":\"osram\",\"gid\":\"c10caf10-4531-4d97-bb99-761ef5487fdf\",\"table\":\"hosts\"}<\/RECORD><RECORD>{\"schema\":\"osram\",\"gid\":\"dd22c2c9-501b-4bac-af02-7e68e93953c5\",\"table\":\"hosts\"}<\/RECORD><RECORD>{\"schema\":\"osram\",\"gid\":\"8e7e962d-e3ce-4e76-b584-10c37f31fef5\",\"table\":\"hosts\"}<\/RECORD><RECORD>{\"schema\":\"osram\",\"gid\":\"379a6de1-4d31-4b92-ad9a-1845c37389ad\",\"table\":\"hosts\"}<\/RECORD><\/INDEX><\/LANG><\/CMS_VALUE>",
       "released by":3244,
       "changed by":3244,
       "wf col":null,
       "wf id":null,
       "host":"www.cms-web-dev.os4.spacenet.de",
       "postfix":"/test", 
       "targeturl":"<CMS_VALUE name=\"ttTargetUrl\" tag=\"FS_REFERENCE\"><LANG id=\"§\" set=\"1\"><UID>shorturl<\/UID><UIDTYPE>SITESTORE_LEAF<\/UIDTYPE><REMOTE/><\/LANG><\/CMS_VALUE>",
       "fs_id":258
    }

    zu Lösung Stefan:

    komme so leider auch nicht drauf, da ich einen Error erhalte wenn ich wie beschrieben die FOR-Schleife gestalte:

    06.04.2016 14:15:53.109 ERROR ($CMS_FOR( _itemHostList, _item.hostlist.values )$ at 10, 4): Cannot iterate over: class de.espirit.firstspirit.parser.eval.Undefined

        inside of: Template 'pt_rewriteurls__448_dev' (id=33847)

        inside of: $CMS_TRIM(level:1)$ - at 6, 14

        inside of: $CMS_IF(  ! frRewriteUrls.isEmpty )$ - at 8, 1

        inside of: $CMS_FOR( _item, frRewriteUrls )$ - at 9, 3

        inside of: $CMS_FOR( _itemHostList, _item.hostlist.values )$ - at 10, 4

    lg thomas

    0
  • Zendesk API User
    Author: StefanSchulz - 4/6/2016 13:26

    Hm, sehe gerade erst, dass du direkt auf die Spalten der Datenbank zugreifst und nicht auf das Formular, richtig? Dann geht das so nicht und anders vermutlich auch eher schwer. Deine Ausgabe (RECORD) oben zeigt keinen Record sondern einen Datensatzeintrag mit den einzelnen Spalten. Auf diesem Weg fehlt jegeliche Verknüpfung zum Formular und somit auch zur Auswertung des FS_INDEX.

    Gruß

    Stefan

    0
  • Zendesk API User
    Author: thomas_ritter - 4/6/2016 14:14

    Ok, Danke.

    Dann werde ich es direkt in der Tabellenvorlage Umsetzen müssen und diese als Content einbinden in das Pagetemplate.

    $CMS_TRIM(level:2)$

    <urlrewrite>

      $CMS_FOR(_item, ttHostList)$     

          <rule>

           <from>^/web/$CMS_VALUE(ttShortURL)$</from>

           <to type="redirect">http://$CMS_VALUE(_item.ttName)$$CMS_VALUE(_item.postfix)$/TemplateMaster$CMS_REF(ttTargetUrl)$</to>       

           <condition name="host" operator="equal">$CMS_VALUE(_item.ttName)$</condition>  

        </rule>

      $CMS_END_FOR$

    </urlrewrite>

    $CMS_END_TRIM$

    lg thomas

    0
  • Zendesk API User
    Author: MichaelaReydt - 4/11/2016 10:22

    Hallo Thomas,

    ist dieses Posting noch offen? Benötigst du noch weitere Hilfe oder war der direkte Weg über die Tabellenvorlage erfolgreich?

    Viele Grüße

    Michaela

    0
  • Zendesk API User
    Author: thomas_ritter - 4/12/2016 9:59

    Hallo Michaela,

    das Problem ist damit erledigt.

    Danke.

    0
  • Zendesk API User
    Author: TimoMeister - 6/21/2017 8:02

    Hallo zusammen,

    wenn ich das richtig lese, kommt man über ein contentSelect nicht direkt an die Werte des FS_INDEX, richtig?

    Wie komme ich dann an die Werte?

    In meinem Anwendungsfall kann ich es nicht direkt in der Tabellenvorlage umsetzen.

    Viele Grüße

    Timo

    0
  • Zendesk API User
    Author: thomas_ritter - 6/21/2017 8:54

    Hi Timo,

    poste doch mal ein Beispiel bzw. Ausschnitt deines Codes und eine Erklärung warum du nicht direkt auf die Tabellevorlage zugreifen kannst.

    0
  • Zendesk API User
    Author: TimoMeister - 6/21/2017 9:11

    <CMS_FUNCTION name="contentSelect" resultname="fr_cs_assets">

         <CMS_PARAM name="schema" value="FSDatabase" />

         <QUERY entityType="Systemassets"></QUERY>

    </CMS_FUNCTION>

    $CMS_FOR(_bim, fr_cs_assets.bim_files)$

    <li>$CMS_VALUE(_bim.class)$</li>

    $CMS_END_FOR$

    Ausgabe:

    de.espirit.firstspirit.client.access.editor.lists.IndexImpl$BoundRecord

    Die Spalte "bim_files" ist ein XML-Feld das ich mit FS-INDEX setze.

    In der Tabellenvorlage funktioniert die Ausgabe wie gewünscht. Ich benötige die Informationen aber noch für einen Teaser in einem bestimmten Template.

    0
  • Zendesk API User
    Author: sgoess - 7/14/2017 10:11

    Hallo zusammen,

    das von TimoMeister beschriebene Problem habe ich auch - hat hier jemand eine Lösung parat? Oder konntest du das mittlerweile lösen, Timo?

    Viele Grüße

    Sebastian

    0
  • Zendesk API User
    Author: TimoMeister - 7/17/2017 6:53

    Hallo Sebastian,

    ich habe nur eine sehr umständliche bzw unschöne Lösung. Leider geht es bisher (?) nicht anders.
    Über ein weiteres ContentSelect und dann eine Abfrage über den Identifier.

    $CMS_FOR(_b,fr_cs_bim.filter(x->x.getGid.toString==_bim.getIdentifier.substring(32,68)))$

    <li>$CMS_VALUE(_b.description)$</li>

    $CMS_END_FOR$

    Viele Grüße

    Timo

    0
  • Zendesk API User
    Author: TimoMeister - 10/17/2018 7:00

    Hierzu gibt es einen Feature Request - FS_INDEX direkter Zugriff auf Entity in ContentSelect

    0
  • Zendesk API User
    Author: hoebbel - 3/14/2019 14:50

    Hallo Sebastian,

    auch wenn es sehr spät ist, vielleicht hilft dieser Lösungsansatz weiter:

    Erst das content2 Objekt holen und dann damit die entity zum dataset umwandeln.

    Über das dataset.formData.<Name der Eingabekomponente> kommt man dann an den Index und kann über diesen "ganz normal" iterieren.

    Auch nicht schön, aber in meinen Augen etwas sauberer als das Persistenzformat zu interpretieren.

    Der entsprechende Templatecode sieht so aus (Annahme: Die Datenquelle heißt "FSDatabase", die FS_INDEX Eingabekomponente "bim") - und ich hoffe, ich habe mich nirgendwo vertippt :smileywink:

    $-- Content2 holen --$

    $CMS_SET(FSDatabaseCS2, #global.userService.getStore(class("de.espirit.firstspirit.access.store.Store$Type").CONTENTSTORE,false).getContent2ByName("FSDatabase"))$

    $-- über die contentSelect Funktion iterieren --$

    $CMS_FOR(_asset, fr_cs_assets)$

      $-- entity in dataset umwandeln --$

      $CMS_SET(_assetDataset,FSDatabaseCS2.getDataset(_asset))$

      $-- über die FS_INDEX Eingabekomponente iterieren --$

      $CMS_FOR(_bim,_assetDataset.formData.bim.values)$

        $-- Gewünschte Informationen ausgeben --$

      $CMS_END_FOR$

    $CMS_END_FOR$

    Vielleicht hilft es ja,

    viele Grüße,

        Holger

    0
  • Zendesk API User
    Author: MarsDD - 3/15/2019 6:30

    Hallo,

    viel schöner wäre es, wenn ContentSelect Datasets zurück liefern würde. Vom Entity kommt ich nur via Content2 ans Dataset. Allgemein wäre es wünschenswert, da eine Rückkopplung von Entity <-> Dataset zu schaffen.

    Viele Grüße

    Marcel

    0
  • Zendesk API User
    Author: hoebbel - 3/15/2019 7:17

    Hallo Marcel,

    im Prinzip sehe ich das auch so, im Detail würde dies aber erst einmal eine inkompatible Änderung der Funktion sein.

    Bleibt also die Möglichkeit, dass über einen zusätzlichen Parameter aufzubohren oder gleich eine weitere Funktion zur Verfügung zu stellen, die mittelfristig die contentSelect Funktion ablösen könnte [vom Dataset kommt man ja leicht zum Entity, umgekehrt ist das schon deutlich schwieriger, da man hier zusätzliche Context-Informationen benötigt].

    Hier wäre es sinnvoll, einen entsprechenden Feature Request zu erstellen, damit dies diskutiert und bewertet werden kann.

    Viele Grüße,

      Holger

    0

Please sign in to leave a comment.