web-dev-qa-db-ja.com

エンティティリファレンスは、サービスを使用してRESTサーバーで問題を作成します

私はWebサービスを構築しており、モバイル開発者向けのドキュメントを書いています。

エンティティリファレンスサービス3を作成/変更する場合は、このような構造を要求します

"field_organization": {
    "und":[{
        "target_id":"Organization name (69)"
    }]
  }

このようなフィールド

dsm() output

しかし、ノードのタイトルなしでnidのみを与える別の方法がありますか?もっと便利かもしれません。

のようなものを読んだ

"field_organization":[{
     "target_id":{
                "target_id":"[nid:69]"
          }
   }]

またはのように

   "field_organization": {
       "und":[{
             "target_id":{
                 "target_id":"[nid:69]"
               }
           }]
     }

公式ドキュメント に記載されていますが、機能しませんでした。

誰かがエンティティ参照フィールドのnidのみを与える方法を知っていますか?

3
Shyghar

私は解決策を見つけました!サービスはフォーム送信ハンドラーを使用するため、必要なデータ構造は入力ウィジェットに依存します(これは主要な設計上の欠陥である可能性があります)。 「オートコンプリート/タグ付け」の場合、label (id) thingyが必要です。しかし、チェックボックスに切り替えると、"field_reference": { 1:1, 2:2, ... ,nid:nid}および選択ボックス"field_reference": [1,2,3 ... nid]

REST-APIは、フロントエンドが使用するウィジェットに依存していますが、少なくとも機能します。その利点は、通常のフォーム入力と同じようにREST投稿が検証されることです。また、実装されたアプローチも確認します http://drupal.org/project/restws

3
Philipp Melab

私はフィリップの方法を試しましたが、運はありませんでした。私の場合(ウィジェットのタイプはselectおよびservices-7.x-3.3です)

    "field_reference": {"und": "977"}

動作します。 977はnidです。

2

サービスを機能させるためにウィジェットとして選択リストを使用していましたが、エンティティ参照フィールドで参照されているノードの数が多いため(〜9000)、タイムアウトの問題が発生しました。ノードの編集フォームを開くことさえできませんでした。

そこで、ロードを高速化するオートコンプリートフィールドに切り替えました。 「NAME(NID)」の問題を克服するために、NAMEの部分が正しいものである必要がないことに気付きました。 NIDのみが重要です。したがって、「Dummyname(123)」のようなsendindは、「My node」というタイトルのノードのnidである123で実際に正しい参照を保存します。

1
LKallipo

チェックボックス/ラジオボタンウィジェットでエンティティ参照フィールドを使用すると、同様の問題が発生しました。最終的に、私の特定のシナリオの問題は、フィールドグループモジュールを使用してノードタイプのすべての管理フィールドを非表示にすることでした(フォームの変更を使用して、指定したフィールドグループ内のすべてのフィールドのアクセスをfalseに設定しました)。サービスを取得するにはPOSTが正しく機能するために、エンティティ参照フィールドをフィールドグループから取り出す必要がありました。その後機能したJSONは次のとおりです。

{
 ...

 "field_entity_ref":{"und":"nid"}

 ...
}
0
pjc