Hallo zusammen,
ich habe es auch grad getestet und die o.g. Schreibweise st_list.dataset.entity
funktioniert definitiv NICHT in der Version 5.0. Zumal die so sowieso nicht funktionieren würde, da man eine Schleife um st_list machen muss, so etwa:
$CMS_FOR(item, st_list)$
$CMS_VALUE(item.dataset.entity.name)$
$CMS_END_FOR$
Aber auch das funktioniert nicht, sondern nur so:
$CMS_FOR(item, st_list)$
$CMS_VALUE(item.cs_name)$
$CMS_END_FOR$
Diese Umstellung halte ich aber auch für fragwürdig, denn Sinn und Zweck von Datenquellen ist es doch, auf Daten einer extern angebundenen Datenbank zugreifen zu können, und das sollte meiner Meinung nach unabhängig von Formulardefinitionen sein. Und die Argumentation, dass zukünftig alles über die Eingabekomponenten ausgelesen werden soll, kann ich überhaupt nicht nachvollziehen, zumindest nicht bei Datenquellen.
Ein Beispiel aus unserem Projektalltag:
Eine Datenquelle wird per Import aus einem Drittsystem mit Produktdaten befüllt. Die Datenbank hat z.B. 50 Felder für jedes Produkt, in FS werden aber nur die die relevanten 10-20 Felder angezeigt, die anderen interessieren für den redaktionellen Ablauf nicht - sollen aber trotzdem auf der HTML Seite ausgegeben werden.
An diese Daten kommt man jetzt nur dran, wenn man Dummy Eingaben mit hidden="yes" definiert. Das kann ja auch nicht die Lösung sein.
Was spricht denn dagegen, aus dem Rückgabewert von FS_LIST über eine Methode die Entities auslesen zu können? Das könnten wir bei der Migration relativ einfach anpassen ohne wirklich alles umbauen zu müssen.
Interessant finde ich auch, dass die drei Möglichkeiten, Datensätze zu verarbeiten so unterschiedlich funktionieren:
- Contentprojektion:
#row
gibt immer noch direkt die Entity aus - FS_DATASET gibt einen DatasetContainer zurück, wo man sich immerhin über
st_data.dataset.entity
die Entity rausholen kann - FS_LIST gibt ein IdentifiableIdProvidingFormData zurück, wo man nach meinen Erkenntnissen gar nicht mehr an die Entity dran kommt...
Ich plädiere für die Implementierung einer Methode getEntity() für die Klasse de.espirit.firstspirit.generate.IdentifiableIdProvidingFormData!
Grüße
Matthias