質問
Drupal 7からDrupal 6インストールまでノードを作成しようとする次の問題があります。ターゲットDrupalサイトは、サービス3.xを実行しています。
これが私のコードです:
$base_url = $params['path'];
$data = array(
'username' => $params['username'],
'password' => $params['password'],
);
$data = http_build_query($data, '', '&');
$headers = array();
$options = array(
'headers' => array('Accept' => 'application/json'),
'method' => 'POST',
'data' => $data
);
$response = drupal_http_request($params['path'] . '/user/login', $options);
$data = json_decode($response->data);
// Check if login was successful
if ($response->code == 200) {
// Now recycle the login cookie we recieved in the first request
$options['headers']['Cookie'] = $data->session_name . '=' . $data->sessid;
// Create a new node
$data = array(
'node' => array (
'type' => 'cloudnode',
'title' => 'node1',
'field_ip_address' => array ('value' => '1.2.3.4'),
)
);
$options['data'] = http_build_query( $data, '', '&');
$options['method'] = 'POST';
$response = drupal_http_request($base_url . '/node', $options);
}
else {
die ('Failed to login');
}
200の応答があります。ノードは作成されていますが、どういうわけか私の「field_ip_address」CCKフィールドの世話をしません。
私はどんな種類のバリエーションでも試しましたが、それらは機能しません。周りにも多くのドキュメントはありません。
誰かがRESTを使用してノードを作成することに成功した場合、私はどんな助けにも非常に興味があります。
解決
CCKフィールドは、実際のフィールドが単一の値のみに制限されている場合でも、常に一連のフィールドとして保存されます。
だからあなたは次のようなものでなければなりません:
'field_ip_address' => array(array('value' => '1.2.3.4'))
Drupal 7では、フィールド値は言語によってさらにグループ化されていることに注意してください。Language_none)フィールドが言語に依存しない場合。だからそれは次のようなものになるでしょう:
'field_ip_address' => array('und' => array(array('value' => '1.2.3.4')))
質問が修正されたとマークできるように、私のコメントからコピーしました:)
所属していません drupal.stackexchange