web-dev-qa-db-ja.com

ユーザーをサービス(JSON)にカスタムフィールドで登録する

JSONのサービスを介してDrupal7に新しいユーザーを登録しようとしています。実際、私はJava(Android)からの情報をJSON形式でサーバーにサービスモジュールを有効にしてサーバーに投稿しています。成功したJSON投稿の例は次のとおりです。

    {
    "name": "erfan",
    "pass": "1234",
    "mail": "[email protected]",
    "status": "1"
     }

RL: [siteURL]/[endpoint]/user/register

名前、メール、ステータスなどの基本的な情報を持つユーザーの作成に成功しました。

field_addressfield_phoneなどのカスタムフィールドをWebサイトに追加し、JSON経由でサーバーに送信したいと考えています。

問題は、これらのデータをサーバーに投稿する方法がわからず、それに関するドキュメントが見つからなかったことです。 PHPコーディングが得意ではないため、私の試行錯誤のアプローチもうまくいきませんでした。助けてください。ありがとう。

4
erfannf2

これがあなたを助けることを願って、

Drupal 7では、以下JSON形式を使用してカスタムフィールドを追加できます(field_user_image

{
    "name": "test",
    "pass": "password",
    "mail": "[email protected]",
    "field_user_image": {
        "und": [{
            "fid": "2"
        }]
    }
}

私は地元で試してみましたが、問題なく機能しています。

  • 新しいフィールドを作成しました[〜#〜] uuid [〜#〜]

    enter image description here

  • Firefoxポスターアドオンを使用してサービスを呼び出す

    enter image description here

  • コード


  { 
    "name": "testuser123", 
    "pass": "testuser123", 
    "mail": "[email protected]", 
    "field_register_uuid": 
      { "und": 
        [{ 
          "value": "65C7DCA4-8F03-473C-9E8F-08B3F29E91AE" 
        }] 
      }
  }

カスタムフィールドで新しいユーザーを作成できます

参考文献

4
inizio

これはコメントになるはずですが、評判が足りません...
ユーザーを作成する場合、登録フォームに表示されているフィールドのみを渡すことができます。それ以外の場合は、@ paul-mがコメントで述べたように、まずユーザーを登録してから、新しいフィールドで更新する必要があります。

登録フォームにフィールドを表示するには、

設定->人->アカウント設定->フィールドの管理
目的のフィールドの編集リンクをクリックし、[ユーザー登録フォームに表示]をオンにします。

2
lastYorsh

ユーザー登録を機能させるには、フィールド値を「フラット化」する必要がある場合があります。以下の例では、フィールドはウィジェットのラジオボタンを含むList (text)フィールドです。

  • [〜#〜]投稿[〜#〜]?q=[my-endpoint]/user/register.json
  • コンテンツタイプapplication/json

JSONデータから[〜#〜]投稿[〜#〜]

{
  "name":"bob",
  "mail":"[email protected]",
  "conf_mail":"[email protected]",
  "pass":"secret",
  "pass2":"secret",
  "field_choices":"2"
}

これはラジオボタンでも機能します。

"field_choices":{"und":"a"}

ただし、この同じフィールドでselect listウィジェットを使用すると、JSONは次のように形成されます。

"field_choices":{"und":[{"value":"2"}]}

上記のJSONはラジオボタンでは機能しません。406 - Not Acceptable An illegal choice has been detected. Please contact the site administrator。これは、期待するJSONに関して、Servicesモジュールがフィールドのウィジェットに依存する場合があることを覚えておくための教訓です。

2