アプリの作成にはDrupalGapを使用しています。ユーザーがボタンを押すことで「チェックイン」できるようにするノード(コンテンツタイプ充電ステーション)があります。これまで、DrupalGapのノードページに、onClickイベントで関数を実行するボタンを作成しました。
この関数は、ユーザーにチェックインさせたいノードであるNIDを受け取ります。次に、エンティティ参照フィールドである「checked_in_chargingstation」と呼ばれるユーザーのフィールドがあります。
DrupalGapのドキュメントには、user_updateに関する情報はあまりありません。 「...」とだけ書かれています。しかし、NIDを渡すことでノードを更新できるようです。だから私はユーザーにも同じことができると思いましたか?しかし、それは機能していないようです。成功のアラートが表示されますが、ユーザーの変更を確認できません。
チェックインコード。 Drupal.user.uidは現在のユーザーのuidを取得します。
function check_in($nid){
var $field_checked_in_chargingstation = {};
$field_checked_in_chargingstation["und"] = {
target_id: $nid,
};
var user = {
uid: Drupal.user.uid,
field_checked_in_chargingstation: $field_checked_in_chargingstation,
}
user_save(user, {
success:function(result){
console.log(result);
}
});
}
コンソールで私は得ます:
私が見ることができるjsonを見て:
"field_checked_in_chargingstation": {
"und": [
{
"target_id": "29088"
}
]
},
しかし、これは間違ったIDです。これは以前にDrupalと "edit"ユーザーから割り当てた古いノードです。そのため、更新されていないようです。ccをすべてDrushしようとしても、機能していないようです。
アプリからユーザーを編集しようとすると、エンティティ参照フィールドにnull値しか表示されません。 Drupalgapのドキュメントでの1つの提案は、エンティティ参照ビューを作成することです http://docs.drupalgap.org/7/Entities/Entity_Reference 私もこれを行いました。
これが少し長い場合は申し訳ありません。また、Stack Exchangeに投稿するか、DrupalGapの問題として投稿するかはわかりません。
これは、[表示の管理]ページのエンティティ参照フィールドに選択したウィジェットに大きく依存します。作業が最も簡単なウィジェットはAutocompleteウィジェットで、この時点でこのJSONを送信します。
"field_checked_in_chargingstation": {
"und": [
{
"target_id": "... (29088)"
}
]
},
サービスモジュールはDrupalのフォームシステムと連動しているため、フィールドのウィジェットを変更すると、Drupalに送信する必要があるJSONデータが変わる可能性があります。