Search the FirstSpirit Knowledge Base
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
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.
Wie sieht denn die entsprechende Fehlermeldung aus? Ist "Prodid" ein gültiger Name im inneren Formular?
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
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--$
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
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.
Vielen Dank, das war's.
Gruß Arnold
Super! Schön das ich helfen konnte