Drupal 7 在创建新节点时,Drupal发出错误消息;图像字段中使用的文件不能被引用。”;

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"){

当我要创建一个类型的新节点,然后上载图像字段时,它会显示一个错误“图像字段中使用的文件可能未被引用”。我已经实现了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"){
    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示例。