在新节点创建时,Drupal给出错误消息"The file used in the Image field may not be referenced."



当我要创建一个类型的新节点时,然后上传图像字段,它显示错误"图像字段中使用的文件可能无法引用。我已经实现了被告知使用它file_usage_add的hook_file_insert函数。我在下面有我的代码:

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);
}

相关内容

最新更新