-
UUID erhalten
Hallo liebe Gemeinschaft,
ich habe vermutlich ein symples Problem aber komme zu keiner Lösung.
Ich habe ein Modul in dem eine Datei, (ein Bild) gespeichert wird.
Die Datei kommt über ein Datei Upload Feld aus der Dateiverwaltung.
Das funktioniert soweit, der Datensatz lässt sich auch speichern und später auch ändern.
Das Feld selbst ist vom Typ Blob oder Binary(16).
Um das Bild nun im Frontend auszugeben habe ich ein Modul geschrieben.
Hier wollte ich über das Datenfeld der Tabelle die UUID ermitteln.
Alle benötigten Bildinformationen befinden sich ja in der Tabelle tl_files.
Daher meine Frage über welchen Befehl erhalte ich die UUID um von den selektierten Datensatz auf die Tabelle tl_files zuzugreifen.
Es wird Contao 4.4 verwendet, die geschriebenen Module befinden sich aber noch in der alten Struktur (Contao 3.5) also innerhalb vom Ordner system.
Anmerkung:
Jede prepare Anweisung führt zu einem Fehler.
Bsp.:
$myData = \Database::getInstance()
->prepare("SELECT ....
Danke im Voraus
-
So ganz habe ich das nicht verstanden. Mit dem Feld meinst du das, was dein Modul speichert? Welchen Typ hat es denn jetzt? blob oder binary(16)?
binary(16) sind bei einer Datei in tl_files nur UUIDs, also die Felder 'pid' und 'uuid'. Vom Typ blob sind nur die Metadaten ('meta'). Also was genau speichert dein Modul? Was hast du also und was brauchst du? Dein Datenfeld wird wohl schon die UUID der Datei sein. Eigentlich kann man alles über das FilesModel bekommen und muss nicht irgendwelche Datenbankzugriffe selbst programmieren.
-
Hallo tab,
mit dem vorhandenen Modul hole ich aus der Dateiverwaltung entweder ein Bild oder auch eine andere Datei (PDF). Ich kann hier selber das Format bestimmen.
Also das was sich am besten hierfür eignet.
Die Information steht hinterher in einer DB Tabelle die ich dafür angelegt habe.
Nun weis ich aber leider nicht mit welcher Funktion von Contao ich die UUID ermitteln kann.
-
Du musst das genauer erklären. Die UUID erhältst du nicht "von Contao" sondern eigentlich von deiner Tabelle.
-
Um das Bild zu speichern habe ich die entsprechende DCA Datei erweitert.
Man kann in diesem Fall auswählen.
Der Code hierzu:
In der
PHP-Code:
'm_image' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_user']['m_image'],
'exclude' => true,
'inputType' => 'fileTree',
'eval' => array
(
'fieldType' =>'radio',
'tl_class' =>'clr',
'files' => true,
'files_only' => true,
'extensions' => 'jpg,png,gif'
),
'sql' => "binary(16) NULL"
),
Im Feld "m_image" finde ich folgenden Wert: 14804be2ab8f11e8b6c300155d223c02
In der Tabelle tl_files finde och auch einen Eintrag mit dem entsprechenden Bild aber ich weis nicht wie ich den Datensatz dort ermitteln kann.
Was ich ja benötige ist der Pfad zu dem Bild.
Ich hoffe die Infos waren verständlich.
Danke schon einmal.
-
PHP-Code:
$file = \FilesModel::findByUuid(…);
echo $file->path;
-
Hallo Spooky,
super das war es.
Hat mir ein gutes Stück weiter geholfen.
Liebe Grüße