Drupal 7 开发内部培训资料, 分头诗人

请问用managed_file上传和删除图片并保存到database的问题

赞成!
0
否决!
	if(!empty($form_state['values']['group_ico'])){
		$file = file_load($form_state['values']['group_ico']);
		$file->status = FILE_STATUS_PERMANENT;
		file_save($file);
		$node->field_group_ico [LANGUAGE_NONE] [0] = (array)($file);
	}
	else{
		$node = node_load($nid);
		$fid = !empty($node->field_group_ico[LANGUAGE_NONE][0]['fid'])?$node->field_group_ico[LANGUAGE_NONE][0]['fid']:0;
		if(!empty($fid)){
				$file = file_load($fid);
				file_delete($file, TRUE);
		}
	}
	node_save ( $node );

请看上面的代码,这是一个简单的上传图片文件并保存的例子,上传图片没问题。

问题是删除这个图片,啥也不上传,再保存的时候,页面报错了:

请问我删除的时候,代码是哪里写得不对么?谢谢!

1 个回答

赞成!
0
否决!

个人认为你这句在删除图片后保存,应该是不会运行

if(!empty($form_state['values']['group_ico'])){
    $file = file_load($form_state['values']['group_ico']);
    $file->status = FILE_STATUS_PERMANENT;
    file_save($file);
    $node->field_group_ico [LANGUAGE_NONE] [0] = (array)($file);
}

但很可能不知道为什么,他运行了,所以就继续运行了if 里面的内容,但这个时候,$file 的东西都是空,所以就出错了。你可以在这里面增加 

dsm($file); 测试他的内容。看看file的内容在有ico 跟没ico的时候状态是怎么用的,这就一目了然了。

注:dsm 函数需要安装 devel 模块