Das Abrufen von Dateiobjekten, die sich auf Knoten beziehen, über ein Feld ist einfach mit EntityMetadataWrapper
:
$wrapper = entity_metadata_wrapper('node', $node);
$images = $wrapper->field_images;
Das ist großartig. Ich möchte jedoch einige der Eigenschaften des Standarddateiobjekts verwenden, die jedoch nicht verfügbar sind. Wenn ich mir die Eigenschaften ansehe, die bei $images[0]->file
Verwendung des obigen Codes verfügbar sind, sehe ich Folgendes:
- fid
- Name
- Mime
- Größe
- URL
- Zeitstempel
- Inhaber
Vor allem uri
fehlt, und an seiner Stelle gibt es eine url
Eigenschaft, die die vollständige externe URL zur Bilddatei ist. Ich möchte diese Bilder über ihre URI bearbeiten (Daumen erstellen usw.), also mache ich Folgendes:
$fid = $images[0]->file->fid->value();
$uri = file_load($fid)->uri;
Das scheint den ganzen Sinn der Verwendung von a EntityMetadataWrapper
in erster Linie zu negieren .
Was vermisse ich? Wo befindet sich der URI für das umschlossene Dateiobjekt? Wenn es nicht verfügbar ist, aus Liebe zu allen guten und reinen Dingen, warum nicht?!
Ich bin mir bewusst, dass ich die URL wieder in eine URI dekonstruieren könnte, aber das fühlt sich auch sehr unnötig an.
hook_entity_property_info_alter()
", dann ist das in Ordnung, wollte nur wissen
entity_metadata_system_entity_property_info()
, wo eine Reihe neuer Eigenschaften angeheftet werden $info['file']['properties']
. Ich bin bereit zu wetten, wenn file_entity dort wäre, dass das Array bereits die Entitätseigenschaften selbst darin hätte. Ich werde versuchen, später oder morgen eine Antwort zu schreiben, wenn es noch niemand getan hat
uri
ist dort mit file_entity.