Drupal 7 在创建新节点时,Drupal发出错误消息;图像字段中使用的文件不能被引用。”;
当我要创建一个类型的新节点,然后上载图像字段时,它会显示一个错误“图像字段中使用的文件可能未被引用”。我已经实现了hook\u file\u insert函数,其中告诉它使用file\u usage\u add。我的代码如下:Drupal 7 在创建新节点时,Drupal发出错误消息;图像字段中使用的文件不能被引用。”;,drupal-7,Drupal 7,当我要创建一个类型的新节点,然后上载图像字段时,它会显示一个错误“图像字段中使用的文件可能未被引用”。我已经实现了hook\u file\u insert函数,其中告诉它使用file\u usage\u add。我的代码如下: function mymodule_file_insert($file){ if($file->source=="field_image_und_0" || $file->source=="field_twitter_image_und_0"){
function mymodule_file_insert($file){
if($file->source=="field_image_und_0" || $file->source=="field_twitter_image_und_0"){
mymodule_manage_file($file);
}
}
/**
* implements file manage
*/
function mymodule_manage_file($file){
if($file->fid){
mymodule_save_file($file->fid);
}
}
/**
* implements save file
*/
function mymodule_save_file($file_id){
$file = file_load($file_id);
$file->status = FILE_STATUS_PERMANENT;
file_save($file);
file_usage_add($file, 'file', 'node', $nid);
}
这里是创建新节点时的nid?您传递的是$nid,它没有值。我认为这应该是可行的:
function mymodule_file_insert($file){
if($file->source=="field_image_und_0" || $file->source=="field_twitter_image_und_0"){
mymodule_manage_file($file);
}
}
/**
* implements file manage
*/
function mymodule_manage_file($file){
if($file->fid){
mymodule_save_file($file->fid);
}
}
/**
* implements save file
*/
function mymodule_save_file($file_id, $nid){
$file = file_load($file_id);
if (isset($nid)) {
file_usage_add($file, 'file', 'node', $nid);
}else {
$file->status = FILE_STATUS_PERMANENT;
file_save($file);
}
}
/**
* Implements hook_node_insert().
*/
function mymodule_node_insert($node) {
mymodule_save_file($node->field_name[LANGUAGE_NONE][0]['fid'],
$node->nid);
}
是的,我之所以给出它,是因为文件\u usage\u add使用id,并且它对于一个节点来说是nid,但是我可以得到一个新创建的节点的nid,因为mymodule\u save\u文件将在节点\u save之前触发。我为您添加了一个nid示例。