ascheuch
I'm new here

Werte aus verschachtelter FS_LIST holen

Jump to solution

Hallo Community,

folgende Problemstellung:

Ich habe eine FS_LIST (name = st_product_selection) vom Typ INLINE, in der ich einen Absatz verwende, der wiederum eine FS_LIST (Name = st_prods) vom Typ DATABASE enthält.

Ich möchte mir nun im Ausgabetemplate der "äußeren" FS_LIST eine Liste nur der Datensätze, die in der inneren FS_LIST enthalten sind, ausgeben.

Etwas fehlt mir noch. Folgendermassen sieht es bisher aus:

$CMS_FOR(_categories,st_product_selection)$

     $CMS_VALUE(st_product_selection.get(#for.index).get(#global.project.masterLanguage,"st_prods").get().length())$ $-- Gibt mir die korrekte Anzahl der Elemente der inneren FS_LIST aus--$

      $CMS_FOR(_products,_categories.get(#for.index).get(#global.project.masterLanguage,"st_prods").get())$ $-- Was ist falsch ? --$

            $CMS_VALUE(_products.Prodid)$ 

      $CMS_END_FOR$

$CMS_END_FOR$

Leider ist die Konstellation genau so notwendig.

Gruß Arnold

0 Kudos
1 Solution

Accepted Solutions

Der Ausdruck im inneren CMS_FOR ist kein Liste, das besagt auch die Fehlermeldung. Der Kommentar "Gibt mir die korrekte Anzahl der Elemente der inneren FS_LIST aus" deutet darauf hin, das das Element in der gelöschten Code-Zeile aber schon eine Liste war.

Dann sollte es wahrscheinlich so funktionieren:

$CMS_FOR(_category, st_product_selection)$

     $CMS_FOR(_product,_category.get(#global.project.masterLanguage,"st_prods").get())$

            $CMS_VALUE(_product.Prodid)$

      $CMS_END_FOR$

$CMS_END_FOR$

Die äußere Schleife itertiert über die äußere FS_LIST und liefert Elemente vom Typ FormData. Die innere Schleife holt sich dann die die FS_LIST mit dem Feld-Namen "st_prods" und iteriert über dessen Werte.

Peter

View solution in original post

0 Kudos
7 Replies
Peter_Jodeleit
Crownpeak employee

Wie sieht denn die entsprechende Fehlermeldung aus? Ist "Prodid" ein gültiger Name im inneren Formular?

Peter
0 Kudos

Hallo,

keine Ausgabe im Template.

Fehler der Vorschau:

04.11.2014 11:25:36.096 ERROR ($CMS_FOR( _products, _categories.get(#for.index).get(#global.project.masterLanguage, "st_prods").get() )$ at 69, 2): Cannot iterate over: class de.espirit.firstspirit.parser.eval.Undefined'

Prodid' ist der Spaltenname in der Tabelle, habe es aber auch mit dem Namen des Formularfeldes versucht.

Gruß Arnold

0 Kudos

Ist der Zugriff im 2. CMS_FOR korrekt? Zwei Zeilen höher benutzt du einen anderen Zugriff:

$CMS_VALUE(st_product_selection.get(#for.index).get(#global.project.masterLanguage,"st_prods").get().length())$ $-- Gibt mir die korrekte Anzahl der Elemente der inneren FS_LIST aus--$

Peter
0 Kudos

Sorry, die von dir zitierte Zeile brauch ich nicht wirklich, wollte nur sehen, ob ich die korrekte Anzahl der (inneren) Datensätze bekomme, was auch der Fall ist.

Also wie folgt:

$CMS_FOR(_categories,st_product_selection)$

$CMS_FOR(_products,_categories.get(#for.index).get(#global.project.masterLanguage,"st_prods").get())$

  $CMS_VALUE(_products.cs_prodid)$ 

$CMS_END_FOR$

$CMS_END_FOR$

st_product_selection = äußere FS_LIST

st_prods = innere FS_LIST

Gruß Arnold

0 Kudos

Der Ausdruck im inneren CMS_FOR ist kein Liste, das besagt auch die Fehlermeldung. Der Kommentar "Gibt mir die korrekte Anzahl der Elemente der inneren FS_LIST aus" deutet darauf hin, das das Element in der gelöschten Code-Zeile aber schon eine Liste war.

Dann sollte es wahrscheinlich so funktionieren:

$CMS_FOR(_category, st_product_selection)$

     $CMS_FOR(_product,_category.get(#global.project.masterLanguage,"st_prods").get())$

            $CMS_VALUE(_product.Prodid)$

      $CMS_END_FOR$

$CMS_END_FOR$

Die äußere Schleife itertiert über die äußere FS_LIST und liefert Elemente vom Typ FormData. Die innere Schleife holt sich dann die die FS_LIST mit dem Feld-Namen "st_prods" und iteriert über dessen Werte.

Peter
0 Kudos

Vielen Dank, das war's.

Smiley Happy

Gruß Arnold

0 Kudos

Super! Schön das ich helfen konnte Smiley Wink

Peter
0 Kudos