モジュールサービス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によってノード参照フィールドを渡す方法を探しています。
それが役立つかどうかはわかりませんが、古いバージョンのサービスで同様の問題が発生しました。ノード参照フィールドを選択リストウィジェットを使用するように設定したところ、問題は解消しました。
—
jkopel 2012年