当我要创建一个类型的新节点时,然后上传image字段,其显示错误“可能未引用Image字段中使用的文件”。我已经实现了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);
}
在创建新节点时,我到这里了吗?
答案 0 :(得分:1)
您传递的是$ 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);
}