Plugin Config Media in Frontend-Theme ausgeben

Hallo, in meinem Plugin gibt es eine Medienauswahl für ein Icon. Das soll natürlich im Frontend-Theme ausgegeben werden.

was muss ich im Theme TWIG denn machen, um das Bild zu bekommen?

Wenn ich nur die Variable nutze, bekomme ich nur eine UUID:

{{ shopware.config.MyPlugin.config.icon1 }}

ergibt die ausgabe

01c055b8b5274de1b2d156e2e4faed59

was mach ich nun damit um eine URL zu meinem Bild zu bekommen?

 

außerdem: offenbar gibt es keine Möglichkeit, Variablen anzusehen oder…? {{ debug() }} verursacht Fehler…

Hallo FloC3,

die ID von dem Media kannst du in diese Twig Funktion rein reichen: Shopware 6: Use custom fields with media type
Damit solltest du an das Medien-Objekt mit allen nötigen Informationen kommen.

Viele Grüße aus Schöppingen

cool Michael Telgmann

Hallo [@Michael Telgmann](http://forum.shopware.com/profile/17553/Michael Telgmann “Michael Telgmann”)‍,

danke für die Antwort! Leider funktioniert aber der Dump nicht, das heißt ich weiß nicht was ich in dem Objekt “sportsMedia” nun finden kann…

siehe auch meinen letzten Satz im Thread… wieso klappt {{ dump() }} nicht?

Hallo,

nutzt du das Dev Template, Production Template oder die ZIP Installation? Ist deine APP_ENV auf “dev” eingestellt?

Viele Grüße aus Schöppingen

cool Michael Telgmann

Sind die Beispiele dort in Link richtig? Also ich bekomme hier nur Fehlermeldungen:

{{{ dump (sportsMedia) }}

Uncaught PHP Exception Twig\Error\SyntaxError: „Unexpected „}“.“

{{ dump (sportsMedia) }}

Uncaught PHP Exception Twig\Error\SyntaxError: „Did you forget to run „composer require symfony/debug-bundle“? Unknown function „dump“.“

 

Getestet in der 6.1.1 stable

Hallo R4M,

danke für den Hinweis. Da ist tatsächlich ein kleiner Typo  im Code. So sollte es funktionieren:

{{ dump(sportsMedia) }}

Viele Grüße aus Schöppingen

cool Michael Telgmann

ich nutze die ganz normale, öffentlich zum Download verfügbare 6.1.1 stable. 

ZIP upload und über den Wizard installiert… ganz normal. Nix mit Dev oder Production oder sowas…

und nein, der dump funktioniert nicht. Egal mit wie viel geschweiften Klammern.

auch unabhängig davon, was ich dumpen will… 

Geht aber dennoch nicht :slight_smile: Habt ihr das bei Shopware mal selber ausprobiert?

Hallo,

funktioniert bei mir so einwandfrei: 

{% sw_extends '@Storefront/storefront/page/product-detail/index.html.twig' %}

{% block page_product_detail %}
    {# simplify access to id #}
    {% set id = shopware.config.PluginConfig.config.pluginMedia %}

    {# fetch media as batch - optimized for performance #}
    {% set media = searchMedia([id], context.context) %}

    {# extract single media object #}
    {% set sportsMedia = media.get(id) %}

    {{ dump(sportsMedia) }}

    {{ parent() }}
{% endblock %}

Statt eines Custom Fields habe ich jetzt einen Wert aus einer Plugin Config genommen. Das Prinzip ist aber dasselbe.
Ausgabe dann in der Storefront:

Shopware\Core\Content\Media\MediaEntity {#7136 ▼
  #userId: null
  #mimeType: "image/jpeg"
  #fileExtension: "jpg"
  #fileSize: 16663
  #title: null
  #metaDataRaw: null
  #mediaTypeRaw: "O:47:"Shopware\Core\Content\Media\MediaType\ImageType":3:{s:7:"\x00*\x00name";s:5:"IMAGE";s:8:"\x00*\x00flags";a:0:{}s:13:"\x00*\x00extensions";a:0:{}}"
  #metaData: array:3 [▶]
  #mediaType: Shopware\Core\Content\Media\MediaType\ImageType {#7913 ▶}
  #uploadedAt: DateTimeImmutable @1581608039 {#7472 ▶}
  #alt: null
  #url: "http://shopware.local/media/20/17/4a/1581608039/0f8f758958bf2ca1528c6b3176b58c4f.jpg"
  #fileName: "0f8f758958bf2ca1528c6b3176b58c4f"
  #user: null
  #translations: null
  #categories: null
  #productManufacturers: null
  #productMedia: null
  #avatarUser: null
  #thumbnails: Shopware\Core\Content\Media\Aggregate\MediaThumbnail\MediaThumbnailCollection {#8819 ▶}
  #mediaFolderId: "6f957deea0554e2095389f1a587452b8"
  #mediaFolder: null
  #hasFile: true
  #private: false
  #propertyGroupOptions: null
  #mailTemplateMedia: null
  #customFields: null
  #tags: null
  #thumbnailsRo: "O:77:"Shopware\Core\Content\Media\Aggregate\MediaThumbnail\MediaThumbnailCollection":2:{s:11:"\x00*\x00elements";a:3:{s:32:"22d85a9f44db449796573fb3ef6149a6";O: ▶"
  #documentBaseConfigs: null
  #shippingMethods: null
  #paymentMethods: null
  #productConfiguratorSettings: null
  #orderLineItems: null
  #cmsBlocks: null
  #cmsSections: null
  #cmsPages: null
  #documents: null
  #_uniqueIdentifier: "0232c500795d44728deaea1ab6f01ae5"
  #versionId: null
  #translated: array:3 [▶]
  #createdAt: DateTimeImmutable @1581608039 {#7122 ▶}
  #updatedAt: DateTimeImmutable @1581609070 {#7875 ▶}
  #extensions: array:1 [▶]
  #id: "0232c500795d44728deaea1ab6f01ae5"
}

Warum ich nach der installierten Version frage: dump() funktioniert nur, wenn das DebugBundle von Symfony aktiv ist. Dies ist nicht der Fall, wenn ihr z.B. das Production Template oder eben die ZIP Installation nutzt.
Zum Entwickeln solltet ihr euch das Dev Template aufsetzen: GitHub - shopware/development

Viele Grüße aus Schöppingen

cool Michael Telgmann

[@Michael Telgmann](http://forum.shopware.com/profile/17553/Michael Telgmann “Michael Telgmann”)‍,

sorry wenn ich das so sage… aber das ist Mist.

Ich kann doch nicht für jedes Kundenprojekt ein Dev-Template aufsetzen… für neue Projekte ist das vielleicht noch machbar (wenn auch umständlich), aber für Shops die sich ständig im Wandel befinden absolut nicht tragbar…und ganz ehrlich: ich hab auch keinen Bock mit GIT, Docker und dem anderen Gedöns rumzuhantieren, nur um schnell mal nen neuen Shop aufzusetzen und weiter zu entwickeln… genau dafür gibts doch die ZIP-Downloadversion.

und der “jetzt schon Klassiker” trifft leider wieder zu: in SW5 ging das auch, warum gibts diese ultra basic Funktion nicht in SW6? Sollte das nicht eine Basisfunktion von TWIG sein?

Versuche mal bitte in der „.env“ Datei in deinem Shopware root Verzeichnis den Wert von „APP_ENV“ auf „dev“ zu stellen. Danach hatte ich ja vorhin schon mal gefragt  Smile
Dadurch sollte das DebugBundle aktiviert werden. Ggf. Cache leeren usw. 

1 „Gefällt mir“

Ansonsten kann das hier auch helfen: GitHub - FriendsOfShopware/FroshDevelopmentHelper: Helpful development tools

[@Michael Telgmann](http://forum.shopware.com/profile/17553/Michael Telgmann „Michael Telgmann“)‍

Versuche mal bitte in der „.env“ Datei in deinem Shopware root Verzeichnis den Wert von „APP_ENV“ auf „dev“ zu stellen. 

das ist doch eine Lösung, mit der man leben kann! Danke!.

 

jetzt müsste ich das nur noch in einem Plugin verwenden können, um das Theme zu erweitern… siehe https://forum.shopware.com/discussion/66164/theme-block-in-plugin-ueberschreiben-wie#latest

Meine Fresse, den Hinweis mit dem Wert APP_ENV muss man erst einmal wissen. Ich dachte dump() wäre schon im Standard vorhanden.

Hallo,

freut mich, dass ich euch helfen konnte  Smile
Da Shopware 6 eine Fullstack Symfony Application ist, ist es sicherlich hilfreich, sich erstmal ein bisschen Symfony Basis-Wissen anzueignen. Z.B. über die verschiedenen Environment Einstellungen, die man vornehmen kann: Configuring Symfony (Symfony Docs)
und warum „dump()“ in der APP_ENV=prod eben nicht funktioniert: The Bundle System (Symfony Bundles Docs) production/bundles.php at 6.1 · shopware/production · GitHub

Viele Grüße aus Schöppingen

cool Michael Telgmann

kann ich nochmal auf mein Problem hinweisen? Hab leider immer noch kein Statement von Shopware bekommen… https://forum.shopware.com/discussion/66164/theme-block-in-plugin-ueberschreiben-wie#latest

@_MikeB‍ also bei mir funktioniert das so:

{% set images = searchMedia(mediaIds, context.context) %}

wobei mediaIds ein Array ist