Простой запрос отдыха для создания узлов

drupal.stackexchange https://drupal.stackexchange.com/questions/3207

  •  16-10-2019
  •  | 
  •  

Вопрос

У меня есть следующая проблема, пытаясь создать узлы от Drupal 7 до установки Drupal 6. Целевым сайтом Drupal является управление Services 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 ответа; Узел создается, но каким -то образом он вообще не заботится о моем поле CCK Field_ip_address.

Я пробовал какие -либо вариации, но они не работают. Здесь также не так много документации.

Если бы кому -то удалось создать узлы, используя Rest, я был бы очень заинтересован в любой помощи.

Это было полезно?

Решение

Поля CCK всегда хранятся как массив полей, даже если фактическое поле ограничено только одним значением.

Так что вы должны быть что -то вроде:

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

Обратите внимание, что в Drupal 7 значения полевых значений дополнительно сгруппированы языком, который является «UND» (Ranguage_none), если область зависит от языка. Так что это было бы что -то вроде этого:

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

Скопировано из моего комментария, чтобы вопрос мог быть помечен как фиксированный :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с drupal.stackexchange
scroll top