Services 3 und Knotenreferenz

7

Ich arbeite mit den Moduldiensten 3 (D7) und rufe die Drupal-Methode von einem Java-Client aus auf. Ich kann mich anmelden (und die Sitzung im Cookie behalten) und einen einfachen Knoten erstellen.

Ich kann jedoch kein Knotenreferenzfeld festlegen.

Um den Weg zu finden, habe ich zuerst die Knotenstruktur (mit dem Referenzfeld) in meiner Drupal-Site betrachtet:

 [field_presta_presta_suivi] => Array
    (
        [und] => Array
            (
                [0] => Array
                    (
                        [nid] => 43
                    )

            )

    )

Also habe ich in meinem Java-Client eine Funktion erstellt, um diese Struktur zu reproduzieren:

public  static HashMap addReferenceField(String field, String language, String type_ref,Object value, HashMap node, int delta ){
        HashMap f = new HashMap();
        HashMap p = new HashMap();      
        Object[] i = new Object[delta+1];           
        HashMap val = new HashMap();

        val.put(type_ref, value);
        i[delta] = val;
        p.put(language, i);
        f.put(field, p);
        return f;
    }

Mit dieser Funktion wird eine HashMap erstellt, die dem Parameter des Dienstes 'node.create' hinzugefügt wird.

Diese Funktion funktioniert mit einem User Refence-Feld (das dieselbe Knotenstruktur aufweist), aber als ich es als Knotenreferenz verwendet habe, hat der Server "Nicht akzeptabel" zurückgegeben.

Ich habe bereits viel Zeit damit verbracht und kein Beispiel oder einen ähnlichen Fall gefunden, daher hier meine Frage:

Wie können Sie mit Services 3 (D7) einen Knoten mit einem Knotenreferenzfeld erstellen?

Freie Radikale
quelle
1
Nach einigen Versuchen habe ich festgestellt, dass ich ein Knotenreferenzfeld nur unter Verwendung des Titels (ohne NID) hinzufügen kann. Ich denke, das liegt an der automatischen Vervollständigung des Widgets. Ich bin immer noch auf der Suche nach einer Möglichkeit, das Knotenreferenzfeld an seine NID zu übergeben.
3
Ich weiß nicht, ob es helfen wird, aber ich bin auf ein ähnliches Problem mit einer älteren Version von Diensten gestoßen. Ich habe das Knotenreferenzfeld so eingestellt, dass es das Auswahllisten-Widget verwendet, und das Problem ist behoben.
jkopel

Antworten:

2

Die Standardressourcen von Services sind alle ziemlich kaputt, da sie auf der Simulation einer tatsächlichen Formularübermittlung beruhen ( bla! ). Ich empfehle stattdessen die von Services Entity bereitgestellten .

Damien Tournoud
quelle
Vielen Dank. Die Verwendung des Services Entity-Moduls hat das Problem schnell gelöst!
Ajinkya Kulkarni
0

Sie müssen sich nicht für ein anderes Modul entscheiden. Die folgende JSON-Struktur hilft Ihnen beim Erstellen eines Knotenreferenzfelds.

"field_specialization": 
{
  "und": 
       {
         "value":"10" 
       }
}
sandig
quelle