Pregunta

Tengo el siguiente problema tratando de crear nodos de Drupal 7 a un Drupal 6 instalar. El sitio de Drupal destino está ejecutando Servicios 3.x.

Aquí está mi código:

$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');
}

recibo una respuesta 200; se crea el nodo, pero por alguna razón no se ocupa de mi campo CCK 'field_ip_address' en absoluto.

He intentado todo tipo de variaciones, pero que no funcionan. No hay mucha documentación en torno también.

Si alguien ha tenido éxito en la creación de nodos utilizando REST, estaría muy interesado por cualquier ayuda.

¿Fue útil?

Solución

campos CCK siempre se almacenan como una matriz de campos, incluso si el campo actual se limita a un único valor.

Por lo que debería ser algo como:

'field_ip_address' => array(array('value' => '1.2.3.4'))

Tenga en cuenta que en Drupal 7, los valores de campo son, además, agrupados por el lenguaje, que es 'und' ( LANGUAGE_NONE ) si el campo es independiente del idioma. Por lo que sería algo como esto:

'field_ip_address' => array('und' => array(array('value' => '1.2.3.4')))

Copiado de mi comentario, por lo que la cuestión puede ser marcado como fijo:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a drupal.stackexchange
scroll top