Aller au contenu principal

FS_REFERENCE über die API befüllen

Commentaires

3 commentaires

  • Zendesk API User
    Author: Hendrik - 4/30/2020 16:37

    Hallo Martin, bei mir funktioniert der Code im try-Block einwandfrei. Wie beziehst du das page-Objekt?

    0
  • Zendesk API User
    Author: smxy - 5/5/2020 7:57

    Hallo Hendrik,

    vielen Dank für die Antwort.

    ich habe es über zwei verschiedene Wege versucht:

    1. Über die Remote-API. Dort hole ich mir über den StoreAgent den PageStore und darauas dann die Seite

    2. Über ein Kontext-Skript. Dort hole ich mir über context.getElement() die Seite

    Dass der try-Block bei dir funktioniert ist schon einmal gut zu wissen. Dann könnte es eventuell noch mit unserem Projekt zusammenhängen. Ich probiere das Snippet mal im Demoprojekt aus und melde mich nochmal.

    0
  • Zendesk API User
    Author: smxy - 5/5/2020 12:34

    Hallo Hendrik,

    ich habe es eben nochmal im Demoprojekt und anschließend in unserem Projekt versucht. Anscheinend hatte ich in meinem Test einen Logikfehler :smileyblush: Das Feld wird befüllt.

    Die Verwirrung hing mit meinem ursprünglichen Problem zusammen. Ich hatte versucht, einen Link innerhalb eines CMS_INPUT_DOM zu bearbeiten und die Änderungen wurden nicht übernommen. Bei einer tieferen Analyse erschien es mir dann so, dass der Fehler im Bearbeiten der TargetReference liegt. Mit dem "Vorurteil" habe ich dann auch bei einem kleiner gebrochenen Beispiel (Eine simple Seitenvorlage mit nur einem FS_REFERENCE-Feld) ein Fehlverhalten gesehen, das nicht wirklich an dieser Stelle liegt.

    Nach der Erkenntnis, dass das Problem nicht in der TargetReference liegen kann, konnte ich vorhin meinen Logikfehler finden. Ich poste das Snippet mal mit rein. Eventuell hilft das zukünftig jemandem:

    FormField domField = formData.get(language, "pt_dom");
    DomElement dom = (DomElement) domField.get();
    DefaultDomNode domElement = dom.getRoot();
    for (DomNode node : domElement.getChildren(true)) {

       if (node.getNodeType().equals(DomNodeType.LINK)) {

      LinkDomNode linkNode = (LinkDomNode) node;
       Link link = linkNode.getLink();
       FormData linkFormData = link.getFormData();
       FormField domLinkField = linkFormData.get(null, "lt_siteStoreRef");
       TargetReference domReference = (TargetReference) domLinkField.get();
       domReference.set(pageRef);
       domLinkField.set(domReference);
       link.setFormData(linkFormData);
       //linkNode.setLink(link); //Die Methode hatte ich fälschlicherweise aufgerufen. Das führt zur Fehlermeldung "unkown link template referenced: ''" und einem kaputten Link
       }

    }

    Vielen Dank für die Unterstützung :smileyhappy:

    0

Vous devez vous connecter pour laisser un commentaire.