Demande simple REST pour créer des noeuds
Question
Je vais avoir la question suivante en essayant de créer des noeuds de Drupal 7 à Drupal 6 installer. La cible site Drupal est en cours d'exécution 3.x Services.
Voici mon code:
$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');
}
je reçois une réponse 200; le noeud est en cours de création, mais d'une certaine manière, il ne prend pas soin de mon champ CCK « de field_ip_address » du tout.
J'ai essayé toutes sortes de variations, mais ils ne fonctionnent pas. Il n'y a pas beaucoup de documentation autour aussi bien.
Si quelqu'un a réussi à créer des noeuds en utilisant REST, je serais très intéressé pour toute aide.
La solution
champs de CCK sont toujours stockées sous la forme d'un tableau de champs, même si le champ réel est limitée à une seule valeur.
Alors vous il devrait être quelque chose comme:
'field_ip_address' => array(array('value' => '1.2.3.4'))
Notez que dans Drupal 7, les valeurs de champ sont en outre regroupées par la langue, qui est « et » ( LANGUAGE_NONE ) si le champ est la langue agnostique. Donc, ce serait quelque chose comme ceci:
'field_ip_address' => array('und' => array(array('value' => '1.2.3.4')))
Copié de mon commentaire, de sorte que la question peut être marqué comme fixe:)