я имею Drupal 7
сайт. Я создаю узел в моем модуле следующим образом:
$newNode = new stdClass();
$newNode->title = "Hello Node";
$newNode->type = "product";
node_object_prepare($newNode); // Sets some defaults.
$newNode->field_prod_type = 1;
$newNode->field_prod_cost = 125.00;
node_submit($newNode); // Prepare node for saving
node_save($newNode);
Если я повторяю вышеупомянутый newNode, я получаю успешно созданный новый идентификатор узла
echo "<pre>; print_r($newNode); exit();
Вопрос: —
Но когда я проверяю в базе данных, я не вижу никакой новой записи с вышеупомянутыми деталями узла.
Любая помощь высоко ценится.
Вы должны использовать node_object_prepare функция для подготовки значений узлов, как вы уже сделали.
Но узел не будет опубликован (status = 1) и к нему не будет подключен пользователь (uid = 0?).
И, наконец, формат поля — это всегда массивы с двумя измерениями (язык и дельта).
Тогда ваш код должен быть
$newNode->field_prod_type['und'][0] = 1;
$newNode->field_prod_cost['und'][0] = 125.00;
Затем, если вы заглянете в таблицу узлов, у вас должна быть запись для возвращенного nid. Но вы не можете иметь записи в таблицах полей (‘field_data_field_prod_type’ и ‘field_data_field_prod_cost’), если вы неправильно отформатируете их в массиве …
Есть ли у вас сообщение об ошибке при сохранении вашего узла?
Других решений пока нет …