德鲁巴 7 |在 entity_wrapper 取消设置后保留文件?
Drupal 7 | Preserve file after entity_wrapper unset?
问题很简单:如何在服务器上和文件表中保存文件,使其 fid 在 unsetting/changing 值后仍然有效?
$ewrapper = entity_metadata_wrapper('node', $sourceNode);
unset($sourceNode->field_image[$sourceNode->language][0]);
$ewrapper->save();
现在一调用上面就删除了相关文件。如果我使用同样的事情:
$ewrapper->field_image->set($newImage);
在这种情况下,我需要保留旧图像。
感谢大家的帮助!
我认为您应该将文件状态从 FILE_STATUS_TEMPORARY
更改为 FILE_STATUS_PERMANENT
。在这里查看这个答案:
https://api.drupal.org/comment/23493#comment-23493
基本上,没有 file_set_status()
功能,就像 Drupal 6 一样,但现在这段代码应该做同样的工作:
// First obtain a file object, for example by file_load...
$file = file_load(10);
// Or as another example, the result of a file_save_upload...
$file = file_save_upload('upload', array(), 'public://', FILE_EXISTS_REPLACE);
// Now you can set the status
$file->status = FILE_STATUS_PERMANENT;
// And save the status.
file_save($file);
因此,您以一种或另一种方式加载文件对象,更改它 status
属性 并再次保存对象。
问题很简单:如何在服务器上和文件表中保存文件,使其 fid 在 unsetting/changing 值后仍然有效?
$ewrapper = entity_metadata_wrapper('node', $sourceNode);
unset($sourceNode->field_image[$sourceNode->language][0]);
$ewrapper->save();
现在一调用上面就删除了相关文件。如果我使用同样的事情:
$ewrapper->field_image->set($newImage);
在这种情况下,我需要保留旧图像。
感谢大家的帮助!
我认为您应该将文件状态从 FILE_STATUS_TEMPORARY
更改为 FILE_STATUS_PERMANENT
。在这里查看这个答案:
https://api.drupal.org/comment/23493#comment-23493
基本上,没有 file_set_status()
功能,就像 Drupal 6 一样,但现在这段代码应该做同样的工作:
// First obtain a file object, for example by file_load...
$file = file_load(10);
// Or as another example, the result of a file_save_upload...
$file = file_save_upload('upload', array(), 'public://', FILE_EXISTS_REPLACE);
// Now you can set the status
$file->status = FILE_STATUS_PERMANENT;
// And save the status.
file_save($file);
因此,您以一种或另一种方式加载文件对象,更改它 status
属性 并再次保存对象。