JSONのサービスを介してDrupal7に新しいユーザーを登録しようとしています。実際、私はJava(Android)からの情報をJSON形式でサーバーにサービスモジュールを有効にしてサーバーに投稿しています。成功したJSON投稿の例は次のとおりです。
{
"name": "erfan",
"pass": "1234",
"mail": "[email protected]",
"status": "1"
}
RL: [siteURL]/[endpoint]/user/register
名前、メール、ステータスなどの基本的な情報を持つユーザーの作成に成功しました。
field_address
、field_phone
などのカスタムフィールドをWebサイトに追加し、JSON経由でサーバーに送信したいと考えています。
問題は、これらのデータをサーバーに投稿する方法がわからず、それに関するドキュメントが見つからなかったことです。 PHPコーディングが得意ではないため、私の試行錯誤のアプローチもうまくいきませんでした。助けてください。ありがとう。
これがあなたを助けることを願って、
Drupal 7では、以下JSON形式を使用してカスタムフィールドを追加できます(field_user_image
)
{
"name": "test",
"pass": "password",
"mail": "[email protected]",
"field_user_image": {
"und": [{
"fid": "2"
}]
}
}
私は地元で試してみましたが、問題なく機能しています。
新しいフィールドを作成しました[〜#〜] uuid [〜#〜]
Firefoxポスターアドオンを使用してサービスを呼び出す
コード
{
"name": "testuser123",
"pass": "testuser123",
"mail": "[email protected]",
"field_register_uuid":
{ "und":
[{
"value": "65C7DCA4-8F03-473C-9E8F-08B3F29E91AE"
}]
}
}
カスタムフィールドで新しいユーザーを作成できます
参考文献
これはコメントになるはずですが、評判が足りません...
ユーザーを作成する場合、登録フォームに表示されているフィールドのみを渡すことができます。それ以外の場合は、@ paul-mがコメントで述べたように、まずユーザーを登録してから、新しいフィールドで更新する必要があります。
登録フォームにフィールドを表示するには、
設定->人->アカウント設定->フィールドの管理
目的のフィールドの編集リンクをクリックし、[ユーザー登録フォームに表示]をオンにします。
ユーザー登録を機能させるには、フィールド値を「フラット化」する必要がある場合があります。以下の例では、フィールドはウィジェットのラジオボタンを含む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モジュールがフィールドのウィジェットに依存する場合があることを覚えておくための教訓です。