サービス3およびノー​​ドリファレンス


7

モジュールサービス3(D7)を使用しており、JavaクライアントからDrupalメソッドを呼び出しています。ログインして(セッションをCookieに保存して)、単純なノードを作成できます。

しかし、ノード参照フィールドを設定できません。

それを行う方法を見つけるために、私はまず、drupalサイトのノード構造(参照フィールドを含む)を調べました。

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

            )

    )

そこで、Javaクライアントで、この構造を再現する関数を作成しました。

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;
    }

この関数は、サービス「node.create」のパラメーターに追加されるHashMapを作成するために使用されます。

この関数はユーザー参照フィールド(同じノード構造を持つ)で機能しますが、ノード参照に使用すると、サーバーは「受け入れられない」を返しました。

私はすでに多くの時間を過ごしましたが、例や同様のケースは見つかりませんでしたので、ここに私の質問:

サービス3(D7)を使用して、ノード参照フィールドを持つノードを作成するにはどうすればよいですか?


1
何度か試したところ、タイトルを使用するだけでノード参照フィールドを追加できることがわかりました(NIDは除く)。これはウィジェットのオートコンプリートが原因だと思います。私はまだ、彼のNIDによってノード参照フィールドを渡す方法を探しています。

3
それが役立つかどうかはわかりませんが、古いバージョンのサービスで同様の問題が発生しました。ノード参照フィールドを選択リストウィジェットを使用するように設定したところ、問題は解消しました。
jkopel 2012年

回答:


2

サービスのデフォルトのリソースは、実際のフォーム送信のシミュレーションに依存しているため、すべてかなり壊れています(何とか!)。代わりに、サービスエンティティによって提供されるものを使用することをお勧めします。


ありがとう。Services Entityモジュールを使用すると、問題をすばやく解決できました。
Ajinkya Kulkarni 2013

0

別のモジュールに行く必要はありません。json構造に従うと、ノード参照フィールドを作成するのに役立ちます。

"field_specialization": 
{
  "und": 
       {
         "value":"10" 
       }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.