hjaeger
Elite Observer

FS5 api: vom EditorWrapper zu EditorValue - deprecated warning

Jump to solution

Hallo Community.

Im konkreten Anwendungsfall geht es darum, diverse relevante Tabellenspalten der Entity einer Contentprojektion iterativ auszugeben, um damit meta-tags im Head der Seiten zu befüllen. Es handelt sich dabei um einen recht generischen Ansatz, um nicht jedes Feld explizit beim Namen nennen zu müssen.

Nun zum Problem:

Auf versch. Feldern liefert ein entity.getValue("attrName") nur einen EditorWrapper zurück, und nicht das erwünschte EditorValue. Wenn mich nicht alles täuscht war das unter FS < 5 noch anders.

Jetzt kann ich diesen EditorWrapper mittels .getAccessEditor(de.espirit.firstspirit.access.project.Project,boolean) dazu überreden, mir eben doch das EditorValue zu überreichen. Diese Methode ist aber deprecated und wirft ein Warning in der Generierung.

Gibt es eine Alternative zu .getAccessEditor?

Von meinem Ansatz, die Daten via Entity zu holen, möchte ich ungern abrücken, da ich die Routine so generisch im Header-Include der Templates unterbringen kann und mir die Entity der Projektion per MultiPageParams holen kann. Da die Ausgabe der Meta-Tags im Head erfolgen soll wäre mir mit einer Abhandlung innerhalb der Projektion nicht geholfen.

MfG

Hagen Jäger

0 Kudos
1 Solution

Accepted Solutions

Der Zugriff per direkter Punktnotation kann hier nicht verwendet werden, da die Feldnamen im Templatekontext nicht ausgeschrieben, sondern nur innerhalb eines Loops über .getAttributeNames() zur Verfügung stehen.

Solche Untaten mit verschachtelten CMS_VALUE´s zur Konstruktion eines #row.feldname im Templatekontext ging ja nur mit FS3.

Aber zur Lösung des deprecated-Problems:

Die Methode .getAccessEditor gibt es ja dreimal, ich hatte nur die mit der Übergabe des Project-Objekts versucht. Die Variante mit UserService ist nicht deprecated markiert.

MfG

Ingrid

View solution in original post

0 Kudos
2 Replies
aVogt
Returning Creator

Wo und wie verwendest Du das?

versuche es mal mit

$CMS_VALUE(f_ROW.SPALTENNAME)$

Da bekomme ich z.B. ein DomElement wenn die zugehörige Eingabekomponente ein CMS_INPUT_DOM ist.

Falls Du das in einem Script verwendest solltest Du über FormData gehen (das wurde mir zumindest immer empfohlen).

Grüße

Andreas

0 Kudos

Der Zugriff per direkter Punktnotation kann hier nicht verwendet werden, da die Feldnamen im Templatekontext nicht ausgeschrieben, sondern nur innerhalb eines Loops über .getAttributeNames() zur Verfügung stehen.

Solche Untaten mit verschachtelten CMS_VALUE´s zur Konstruktion eines #row.feldname im Templatekontext ging ja nur mit FS3.

Aber zur Lösung des deprecated-Problems:

Die Methode .getAccessEditor gibt es ja dreimal, ich hatte nur die mit der Übergabe des Project-Objekts versucht. Die Variante mit UserService ist nicht deprecated markiert.

MfG

Ingrid

0 Kudos