使用一个字段可以很容易地通过字段掌握与节点相关的文件对象EntityMetadataWrapper
:
$wrapper = entity_metadata_wrapper('node', $node);
$images = $wrapper->field_images;
太好了。但是,我想使用标准文件对象的某些属性,但它们不可用。当我查看$images[0]->file
使用以上代码时可用的属性时,会看到以下内容:
- 菲德
- 名称
- 哑剧
- 尺寸
- 网址
- 时间戳记
- 所有者
最值得一提的是,uri
缺少该url
属性,而在该属性中有一个属性,即图像文件的完整外部URL。我想通过它们的URI(创建缩略图等)来操纵这些图像,所以我就这样做了:
$fid = $images[0]->file->fid->value();
$uri = file_load($fid)->uri;
首先,这似乎否定了使用a的全部要点EntityMetadataWrapper
。
我想念什么?包装文件对象上的URI在哪里?如果没有它,为了热爱所有美好而纯洁的事物,为什么不呢?
我知道我可以将URL解构回URI,但这感觉非常不必要。
1
您正在使用file_entity吗?
—
mpdonadio
@MPD Ahhhh,好消息,不,我不是...如果对象不像实体那样,我不应该期待看到我认为的“属性”。但是,对于实体模块专家来说,URL似乎是一个奇怪的选择,而不是URI。如果答案是“您将需要实施
—
克莱夫(Clive)
hook_entity_property_info_alter()
”,那很好,只是想知道
我实际上不确定是否会有所作为,但是启用该模块的确会在某些地方产生细微的差别。我发现在其他地方缺少与EMW的文件集成,但是还没有为提交补丁程序感到烦恼。
—
mpdonadio
我认为@MPD会-刚发现“罪犯”的地方
—
Clive
entity_metadata_system_entity_property_info()
,那就是一堆新属性$info['file']['properties']
。我愿意打赌,如果file_entity在那儿,该数组本身就已经有实体属性了。如果没有人做,我将在稍后或明天尝试写下答案
做了一个快速测试,
—
mpdonadio
uri
并与file_entity在那里。