cck изображение исчезает при создании node_save
Я сохраняю узел с изображениями, которые заполняются сервисом. Я пишу изображение с drupal_write_record, и изображения уже появляются в узле. Но когда - в конце скрипта - я вызываю node_save, изображение снова исчезает.
Мой код:
$file_drupal_path= $filedata['location'];
$file = new stdClass();
$file->filename = $filedata['name'];
$file->filepath = $file_drupal_path;
$file->filemime = $filedata['mime'];
$file->filesize = filesize($file_drupal_path);
$file->filesource = $filedata['name'];
$file->uid = 1;
$file->status = FILE_STATUS_PERMANENT;
$file->timestamp = time();
$file->list = 1;
// fid is populated by drupal_write_record
drupal_write_record('files', $file);
$imageData = field_file_load($file->fid, TRUE);
return $imageData;
и node_save
function transport_service_save($node) {
$node = (object) ($node);
$node->promote = 1;
node_save(node_submit($node));
return print_r( $node , TRUE );
}
в поле образа cck в узле также есть ключи с неустановленными значениями.
1 ответ
Andreas,
Была точно такая же проблема.
С помощью drupal_execute()
как описано здесь, исправил проблему немедленно:
// Save the node, updated or new
// Get the node object as an array the node_form can use
$values = (array)$node;
// Save the node (this is like pushing the submit button on the node edit form)
drupal_execute('abc_node_form', $values, $node);
Но справедливое предупреждение: в первые несколько раундов он работал как шарм, но теперь я получаю тонны ошибок типа:
warning: call_user_func_array() [function.call-user-func-array]:
First argument is expected to be a valid callback, 'node_form' was given in ...
Не вижу, что изменилось. Все, что я сделал, это позвонил на страницу, которая несколько раз делала сохранение, чтобы проверить это.
И окончательное (надеюсь!) Редактирование этого ответа. Кажется, что необходимо включить файл node.module, который содержит node_form, поэтому добавьте это:
module_load_include('', 'node', 'node.pages.inc');
в вашем коде (как в hook_init()
) сделает свое дело.
Работал здесь, и теперь мои узлы сохраняются с неповрежденными изображениями.