首页 > 解决方案 > 在新节点 create 上,Drupal 给出错误消息“可能未引用图像字段中使用的文件。”

问题描述

当我要创建一个类型的新节点,然后上传图像字段时,它显示错误“图像字段中使用的文件可能未引用。”。我已经实现了 hook_file_insert 函数,它被告知使用 file_usage_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?

标签: drupal-7

解决方案


您正在传递 $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);
}

推荐阅读