B_Schwab
I'm new here

Fehler bei Aufruf von Strukturvariable per getFormData()

Hallo zusammen,

innerhalb einer Navigationsfunktion greife ich derzeit auf eine Strukturvariable per folgendem Aufruf zu:

#nav.ref.getParent().getParent().getData().get("ss_variableName")

ss_variableName sorgt dafür, dass z.B. ein Menüpunkt in Abhängigkeit der übergeordneten Punkte anders dargestellt werden soll.

ss_variableName soll dabei entsprechend vererbt oder überschrieben werden können.

Da getData() ja deprecated ist, habe ich den Aufruf wie folgt umgebaut:

#nav.ref.getParent().getParent().getFormData().get(#global.language, "ss_suppressInMenu").get()

Es wird allerdings teilweise ein Fehler ausgegeben:

ERROR ($CMS_VALUE(#nav.ref.getParent().getParent().getFormData().get(#global.language, "ss_variableName").get())$ at 16, 9): ss_variableName

Nach längerer Suche habe ich herausgefunden, dass dies offenbar nur bei den Menüpunkten auftritt, die den Wert vererbt bekommen. Setze ich den Wert explizit auch auf diesem Menüpunkt, tritt der Fehler nicht mehr auf.

Was muss ich hier anders machen, damit ich auch auf die vererbten Werte zugreifen kann, so dass der Fehler nicht mehr auftritt?

Vielen Dank.

Gruß

B. Schwab

EDIT: Das Problem tritt bei der aktuellen FS Version 5.2.211.71370 auf

3 Replies
bIT_sosswald
Returning Responder

Hallo Herr Schwab,

über die API ...getFormData().get(#global.language, "ss_variableName") funktioniert die Vererbung meines Wissens nach leider nicht.

Im Fall einer Vererbung bekommt man "null" zurück und leider nicht den vererbten Wert. In diesem Fall muss man manuell eine Ebene nach oben iterieren .getParent() und dort noch einmal versuchen den Wert  auszulesen. Erhält man wieder "null" so muss man dies wiederholen, bis man den gewünschten Wert erhält.

Hierfür bietet sich ein kleines Skript ab, welches diesen Vorgang kapselt und somit aus allen Vorlagen des Projektes aufgerufen werden kann.

Innerhalb eines Ausgabekanals einer Vorlage sollte man aber auch über die Vorlagensyntax $CMS_VALUE(ss_mySsVar)$ auf die ssVariablen zugreifen können. Dabei sollte die Vererbung berücksichtigt werden.

Siehe hierzu auch die FirstSpirit Hilfe unter dem Punkt "Variablen in Menüebenen (Strukturvariablen)".

Beste Grüße

Sandro Osswald

Hallo Herr Osswald,

sieht auf den ersten Blick nicht schlecht aus. Ich werde das nun noch einmal im Detail prüfen.

Vielen Dank.

Gruß

B. Schwab

0 Kudos
rbitdd
Returning Responder

Hallo,

ungeachtet der Version sollte der Zugriff auf die Strukturvariablen innerhalb der Navigationsfunktion auch über #nav.data("ss_varname") funktionieren. Dies übernimmt dann auch geerbte Werte.

Beste Grüße

Diana Dohr