heimrichhannot/contao-list-bundle

Ausgabe eines Bildes in der Listenkonfiguration failed

Olli opened this issue · 8 comments

Olli commented

Context
Contao version: 4.9.7
Bundle version: 1.25.0
PHP version: 7.4

Description

Ich möchte beim Auflisten ein Bild ausgeben und habe dafür in der Listenkonfiguration ein Konfigurationselement von Typ "Bild" angelegt.
Ich habe eine Bildgröße ausgewählt und keinen Platzhaltermodus gewählt.
Bei der Frontendausgabe kommt folgendes:
2020-09-28 13:20:11] request.CRITICAL: Uncaught PHP Exception Error: "Only variables can be passed by reference" at /*/vendor/heimrichhannot/contao-list-bundle/src/ConfigElementType/ImageConfigElementType.php line 153 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Only variables can be passed by reference at /*/vendor/heimrichhannot/contao-list-bundle/src/ConfigElementType/ImageConfigElementType.php:153)"} []

Was steht in ImageConfigElement.php im List-Bundle vor Zeile 152 in $templateData[$templateContainer][$templateVariable], bevor der Fehler geworfen wird?

Olli commented

Ich kann es jetzt nicht 1:1 Debuggen weil mein lokales Devsystem nicht gesynct ist mit dem Projekt. Aber die Bedingungen sind nahezu gleich außer dass im Devsystem alles Debugging an ist.
Zumindest bricht es im DevSystem in der Zeile 150 schon weg mit Warning: Illegal string offset 'teaser_image'.
teaser_image heißt die Spalte in der Datenbank.

Kann es sein, dass du die templateContainerVariable am Listen-Konfig-Element gesetzt hast und zwar mit einem einem String, der heißt, wie ein Feld?

Du kannst die templateContainerVariable auch leer lassen, dann ist sie "images". Wenn es daran liegt, baue ich noch etwas mehr Erklärung ein ;-)

Olli commented

Ich habe da nichts gesetzt.
Aktuell sieht es so aus:
Screenshot_2020-09-29 Listenkonfigurationen

sry aber Firefox macht manchmal mist.

Ich glaube, das Problem ist, dass du ein Feld hast, welches "images" heißt in tl_buehnen. Die Variable ist schon belegt. Kannst du bitte in deinem Listen-Konfig-Element "Template-Container-Variable überschreiben" anklicken und dort dann bspw. images2 eintragen und dann in deinem Template das ganze wiefolgt ausgeben:

{% if images2|default and images2.teaser_image|default %}
    {{ include('@HeimrichHannotContaoUtils/image.html.twig', images2.teaser_image) }}
{% endif %}

Dann müsste es gehen.

Leider ist die Doku an dem Punkt dünn. Das holen wir auf jeden Fall nach.

Schaue bitte mal, ob es so geht.

Ich habe mal die README.md erweitert. Jetzt müsste es verständlicher sein :-)

dceba72

Olli commented

Danke. Funkzt. Der Logeintrag war auch gut.