使用一个字段可以很容易地通过字段掌握与节点相关的文件对象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在那里。