Problem: DCA tl_article neues Feld Bild-Upload Ausgabe unknown
Hallo zusammen,
aktuell bin ich dabei, über die dcaconfig.php den Bereich von tl_article zu erweitern. Ich nutze dabei Contao 3.3.5.
Ich möchte konkret eine Checkbox zur optionalen Bildauswahl einfügen, der Pfad soll dann im frontend ausgegeben werden (wird später genutzt als background-image URL inline-css). Die Checkbox konnte ich erstellen, auch die Auswahl eines Bildes ist möglich. Jedoch wird auf der Website schlicht "unknown" ausgegeben und keine URL generiert.
So habe ich die dcaconfig geändert:
PHP-Code:
/** Selectors*/
$GLOBALS['TL_DCA']['tl_article']['palettes']['__selector__'][] = 'addImage';
/**Subpalettes*/
$GLOBALS['TL_DCA']['tl_article']['subpalettes']['addImage'] = 'singleSRC';
/**Palettes*/
$GLOBALS['TL_DCA']['tl_article']['palettes']['default'] = str_replace ('sectionstyle;','sectionstyle,addImage;',$GLOBALS['TL_DCA']['tl_article']['palettes']['default']);
/**Fields*/
$GLOBALS['TL_DCA']['tl_article']['fields']['addImage'] = [
'label' => &$GLOBALS['TL_LANG']['tl_article']['fields']['addImage'],
'exclude' => true,
'inputType' => 'checkbox',
'eval' => array('submitOnChange'=>true),
'sql' => "char(1) NOT NULL default ''"
];
$GLOBALS['TL_DCA']['tl_article']['fields']['singleSRC'] = [
'label' => &$GLOBALS['TL_LANG']['tl_article']['fields']['singleSRC'],
'exclude' => true,
'inputType' => 'fileTree',
'eval' => array('fieldType'=>'radio', 'files'=>true, 'filesOnly'=>true, 'mandatory'=>true),
'sql' => "binary(16) NULL"
];
Bei der Ausgabe in mod_article.html5 habe ich es mal mit folgendem versucht:
PHP-Code:
<?php if ($this->addImage): ?>
<img src="<?php echo $this->src; ?>"/>
<?php endif; ?>
Das ergibt nun src(unknown).
Meine Frage: Wie kann ich den tatsächlichen Pfad des gewählten Bildes am Ende ausgeben? In der Datenbank konnte ich sehen, dass der Eintrag zwar gesetzt ist, aber nur in kryptischer Zahlen/Buchstaben-Abfolge. Ich vermute, dass diese Angabe im Zwischenschritt noch umgewandelt werden muss, konnte jedoch nicht rausfinden, wie das gemacht wird.
Bin für jeden Tipp sehr dankbar!
-- kurzer Background: Es handelt sich um meine ersten Versuche mit der DCA, ich habe bisher keine Erfahrungen mit Backend-Optimierungen und kann nur mit PHP-Grundwissen aufwarten. Ich entschuldige mich im Voraus, wenn ich evtl. etwas schwer von Begriff bin und danke euch für eure Hilfen! --
FilesModel heißt das Zauberwort
Habe eine Lösung gefunden und schreibe sie hier rein, falls jemand anderes mal drüber stolpert.
Bislang habe ich nicht mit FilesModel gearbeitet und wusste auch nicht, dass es dies in Contao gibt. In meinem Fall wird es wie folgt angewendet:
PHP-Code:
<?php $source = \FilesModel::findByUuid($this->singleSRC); ?>
<?php if ($this->addImage): ?>
<div style="background:url('<? echo $source->path;?>') no-repeat center;background-size:cover;"></div>
<?php endif; ?>