-
Datenbank Filesystem
Hey,
ich habe gerade ein Problem mit der Umstellung eines alten Moduls auf die 3.3 Version.
Das Modul überschreibt das Feld singleSrc in tl_content. Früher habe ich "/tl_files/bild.png" in dieses Feld geschrieben, was nun nicht mehr geht. Ich habe schon ziemlich viel ausprobiert und habe das Gefühl, ich steh gerade auf dem Schlauch.
Folgendes habe ich versucht:
1. "/tl_files/bild.png" in die Datenbank speichern und dann
Database\Updater::convertMultiField('tl_content', 'imagesFolder');
drüber laufen lassen
https://community.contao.org/de/show...7-Runonce-Uuid
PHP-Code:
2.
$uuid = String::binToUuid($value);
$objFile = FilesModel::findByUuid($uuid);
$value = $objFile->path;
3.
$objFile = FilesModel::findByPath($value);
$value = $objFile->uuid;
->$value leer
Was hat jemand eine Idee? Ich mach keinen Upload, ich muss die SingleSrc nur irgendwie verlinken. Bin ich ganz falsch?
Danke und liebe Grüße,
Martin
-
Hi,
am besten die Konfiguration eines Dateifeldes vom Core abschauen:
PHP-Code:
'sql' => "binary(16) NULL"
Eventuell hast du noch eine falsche Version im Einsatz.
Ich würde das alte Feld in singleSRC2 zwischenspeichern. Die Bilddaten gehen verloren, wenn du das jetzige Datenbankfeld in binary umwandelst.
Bildpfad in Variable speichern ($singleSRC2);
PHP-Code:
$objFile = FilesModel::findByPath($singleSRC2);
Database::getInstance()->prepare("UPDATE table SET singleSRC = ? WHERE id = ?)->execute($objFile->uuid, $id);
(ungetestet)
lg
-
Hey,
danke erstmal für die Antwort. Leider funktioniert es weiterhin nicht.
Das Datenbankfeld ist auf binary(16) gestellt. Daran kann es nicht liegen.
Ich habe nun folgendes Probiert (angeregt durch diesen Post):
PHP-Code:
$objParams['img'] = 'files/images/apple-touch-icon.png';
$uuid = String::binToUuid($objParams['img']);
$objFile = FilesModel::findByUuid($uuid);
$value = $objFile->path;
echo $uuid.'<br>'.$value;
liefert eine $uuid, aber keine $value
PHP-Code:
$objFile = FilesModel::findByPath($objParams['img']);
$value = $objFile->uuid;
echo $value;
$value bleibt leer
Ist das ein Bug, oder mache ich etwas total falsch?
-
Ich habe nochmal geschaut, ob es vielleicht am Pfad liegt, leider auch ohne Erfolg
PHP-Code:
$objFile = FilesModel::findByPath('http://URL/files/images/apple-touch-icon.png');
echo $objFile->uuid;
$objFile = FilesModel::findByPath('/files/images/apple-touch-icon.png');
echo $objFile->uuid;
$objFile = FilesModel::findByPath('files/images/apple-touch-icon.png');
echo $objFile->uuid;
$objFile = FilesModel::findByPath('apple-touch-icon.png');
echo $objFile->uuid;
Ich bekomme keine einzige Ausgabe. Die Contao Version ist übrigens die 3.3.5
Vielen Dank im Voraus für Hilfestellung!
Code:
EDIT: Die Dateiverwaltung synchronisieren hat das Problem gelöst...
-
Hast du zwischendurch mal die Datenbank synchronisiert (unter 'Filesystem')?
Die vorhandenen Dateien müssen erst in der DB bekannt sein.
Gruß, folkfreund