mhenke
I'm new here

Entity über eine Tabellenvorlage rendern - #row undefiniert

Hallo,

ich habe eine Entity und möchte die entsprechende Tabellenvorlage mit den Daten der Entity rendern.

Wenn man nur Formularwerte in der Tabellenvorlage nutzt, funktioniert das auch. Ich benötige allerdings Zugriff auf #row um auf Beziehungen zwischen Tabellen zuzugreifen.

$CMS_SET(table, "products")$

$CMS_SET(fs_id, 1234)$

$CMS_SET(uidType, class("de.espirit.firstspirit.access.store.IDProvider$UidType"))$

$CMS_SET(contentStore, #global.project.getUserService().getStore(class("de.espirit.firstspirit.access.store.Store$Type").CONTENTSTORE, false))$

$CMS_SET(content2, contentStore.getContent2ByName(table))$

$CMS_SET(entity, content2.getEntity(fs_id))$

$CMS_VALUE(content2.getDataset(entity).formData)$

In den Vorschaufehlern kommen dann Fehler wie "Replacing null value with empty default! Undefined field 'name'!" bei Zugriff auf #row.

Und wenn ich #row.getClass() in der Tabellenvorlage ausgebe kommt "de.espirit.firstspirit.parser.eval.Undefined".

Gibt es eine Möglichkeit um an #row zu kommen?

0 Kudos
4 Replies
StefanSchulz
I'm new here

Hi,

vermutlich verstehe ich etwas falsch, aber wäre in diesem Fall das Objekt hinter #row nicht identisch mit entity? Dann kann man doch direkt auf dem Entity arbeiten.

Oder soll innerhalb der Ausgabe der Formulardaten auf das die Daten beinhaltende Entity zugegriffen werden? Dann müsste man dieses wohl über den Generierungskontext auslesen.

Beste Grüße

Stefan

0 Kudos

#row ist in dem Schnippsel nicht identisch mit entity. Wenn ich ein $CMS_VALUE(entity.getClass())$ mache erhalte ich richtigerweise EntityImpl, #row in der Tabellenvorlage ist undefiniert.

Direkt auf dem Entity arbeiten ist ausgeschlossen weil das eine komplett dynamische Sache sein soll. Ein Benutzer kann eine beliebige Tabellevorlage und eine FS_ID angeben und dann wird entsprechend gerendert.

Wie gesagt geht das auch mit dem Schnippsel oben sofern man sich in der Tabellenvorlage auf die Formularfelder beschränkt. Problem ist das in manchen Vorlagen auch #row verwendet wird.

0 Kudos

Ich glaube, wir reden ein wenig aneinander vorbei.

Meines Wissens steht #row in Tabellenvorlagen nur in Content-Projektionen zur Verfügung und entspricht in diesem Fall dem Entity-Objekt, für das die Vorlage angewendet werden soll.*

Aus dem hier beschriebenen Szenario, der direkten Ausgabe des Entity-Formulars, heraus müsste man in der inneren Vorlage entsprechend auf das außen definierte Entity zugreifen. Hierzu könnte man sicherlich die Tabellenvorlagen so anpassen, dass sie nicht mehr auf #row sondern einer lokalen Variable arbeiten, die entweder auf #row gesetzt wird (falls definiert) und ansonsten auf das aus dem übergeordneten Kontext ermittelte Entity.

Beste Grüße

Stefan

*Nachtrag: In der Dokumentation steht "datenquellenbasierter Absatz", was dem wohl entspricht.

0 Kudos
pavone
I'm new here

Hallo Michael,

benötigst Du noch weitere Hilfe oder haben Dir Stefans Antworten geholfen? In diesem Fall wäre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere Community-Teilnehmer diese auf den ersten Blick finden. Solltest Du zwischenzeitlich eine eigene Lösung gefunden haben, wäre es nett, wenn Du diese hier bereitstellst.

Viele Grüße

Tim

0 Kudos