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.

Était-ce utile?

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:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à drupal.stackexchange
scroll top