# Verständnisfrage zum Tutorial zu "Reading Data"

**URL:** <https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317>\
**Category:** Shopware 6 (German)\
**Created:** [2. Februar 2023 um 09:53 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317 "2023-02-02T09:53:53Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![hoyohoo](https://avatars.discourse-cdn.com/v4/letter/h/67e7ee/32.png) [@hoyohoo](https://forum.shopware.com/u/hoyohoo)\
**Post date:** [2. Februar 2023 um 09:53 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/1 "2023-02-02T09:53:53Z")

</div>

Hi, ich versuche im großen und ganzen seit 2 Wochen ein Plugin zu erstellen, dass mir die gesamten Bilder aus der media repository anhand ihrer Namen und ihrer Pfade ausgibt in einer Tabelle. Das ist das endgültige Ziel, um in das Thema reinzukommen.  
Das Problem ist, ich bekomme schon das Tutorial nicht hin mit dem Titel „Reading data“, da ich schlicht nicht weiß, oder verstehe, wie ich die Methode(n) aus meiner Service php Datei „ReadingData.php“ in meinem Modul „swag-example“ oder in meiner Komponente „hello-world“ aufrufen kann.  
Könnte mir hier jemand bitte helfen?

---

<div class="post-metadata">

**Author:** ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)\
**Post date:** [2. Februar 2023 um 09:56 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/2 "2023-02-02T09:56:58Z")

</div>

Ein Service ist Symfony. Ein Modul oder eine Component ist VueJS.

Das sind zwei unterschiedliche Frameworks, basierend auf PHP bzw. JavaScript, die nichts miteinander zu tun haben.

Im Backend (VueJS) wird alles über API-Requests geladen bzw. getriggert.

---

<div class="post-metadata">

**Author:** ![hoyohoo](https://avatars.discourse-cdn.com/v4/letter/h/67e7ee/32.png) [@hoyohoo](https://forum.shopware.com/u/hoyohoo)\
**Post date:** [2. Februar 2023 um 10:02 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/3 "2023-02-02T10:02:21Z")

</div>

Sorry, ich bin halt maximal verwirrt. Wie sollte ich jetzt also am besten vorgehen, um an mein Ziel zu kommen? Gibt es ein besseres Tutorial?

Wie funktionieren API requests? Sorry, im Prinzip ist hier alles neu für mich, ich kannte bisher lediglich java und C#

---

<div class="post-metadata">

**Author:** ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)\
**Post date:** [2. Februar 2023 um 10:31 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/4 "2023-02-02T10:31:28Z")

</div>

Symfony: [Add store API route - Shopware Developer](https://developer.shopware.com/docs/guides/plugins/plugins/framework/store-api/add-store-api-route) Für die Backend-API gibt es glaube ich kein Tutorial. Da musst du dich am Storefront-API Tutorial halten oder bei GitHub nachsehen.

VueJS: [https://developer.shopware.com/docs/guides/plugins/plugins/administration/add-custom-service](https://developer.shopware.com/docs/guides/plugins/plugins/administration/add-custom-service)

---

<div class="post-metadata">

**Author:** ![hoyohoo](https://avatars.discourse-cdn.com/v4/letter/h/67e7ee/32.png) [@hoyohoo](https://forum.shopware.com/u/hoyohoo)\
**Post date:** [2. Februar 2023 um 10:32 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/5 "2023-02-02T10:32:05Z")

</div>

Ok, vielen Dank, ich schaue es mir an.

---

<div class="post-metadata">

**Author:** ![hoyohoo](https://avatars.discourse-cdn.com/v4/letter/h/67e7ee/32.png) [@hoyohoo](https://forum.shopware.com/u/hoyohoo)\
**Post date:** [2. Februar 2023 um 11:12 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/6 "2023-02-02T11:12:46Z")

</div>

Ich komme schon bei „Add Custom Service“ nicht weiter. Also schon ganz am Anfang, wo befindet sich denn mein „administration root“? Das wurde nie erklärt und taucht scheinbar nur in diesem Tutorial auf. Ist es „/src/Resources/app/administration/src/“ ?

Dann zum Teil „Service injection“, hier steht, ich soll das in eine vue Komponente Packen, für mich wäre das also die „hello-world“ Komponente, ja? Will nur sicher gehen.

---

<div class="post-metadata">

**Author:** ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)\
**Post date:** [2. Februar 2023 um 12:17 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/7 "2023-02-02T12:17:17Z")

</div>

Müsste vermutlich /src/Resources/app/administration/ sind, ggfs. aber auch /src/Resources/app/administration/src/. Am besten bei Github nachsehen, wie Shopware das selbst macht.

Der Service ist nur dafür da, Daten zu schreiben bzw. erhalten. Die Ein-/Ausgabe erfolgt in einer Component. In deinem Fall hello-world.

---

<div class="post-metadata">

**Author:** ![hoyohoo](https://avatars.discourse-cdn.com/v4/letter/h/67e7ee/32.png) [@hoyohoo](https://forum.shopware.com/u/hoyohoo)\
**Post date:** [2. Februar 2023 um 14:31 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/8 "2023-02-02T14:31:39Z")

</div>

Ok, ich habe es nun tatsächlich geschafft, dass in der Konsole unter F12 der Witz mir angezeigt wird. Dennoch weiß ich jetzt nicht, wie ich eine Service php nutze. Ich glaube ich bin zu dumm für shopware ☹

---

<div class="post-metadata">

**Author:** ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)\
**Post date:** [2. Februar 2023 um 15:07 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/9 "2023-02-02T15:07:20Z")

</div>

Du erstellst nun in Synfony PHP eine Admin-API-Route und verbindest damit deinen Service. Diese Admin-API-Route rufst du dann anstatt des Witz-Service auf.

---

<div class="post-metadata">

**Author:** ![hoyohoo](https://avatars.discourse-cdn.com/v4/letter/h/67e7ee/32.png) [@hoyohoo](https://forum.shopware.com/u/hoyohoo)\
**Post date:** [6. Februar 2023 um 09:30 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/10 "2023-02-06T09:30:09Z")

</div>

Hallo Max\_Shop, sorry, ich habe über das Wochenende was zu tun gehabt und kam nicht dazu.

Ich bin aktuell so weit, dass ich scheinbar die Sachen tatsächlich auslesen kann, ich nutze aktuell die folgende Methode:

```auto
public function getMediaConfigurationInformation(Context $context): JsonResponse
    {
        $criteria = new Criteria();
        $criteria->addFilter(new EqualsFilter('fileName', 'favicon'));
        $products = $this->productRepository->search($criteria, $context);
        print_r($products);
        return new JsonResponse($products);
}

```

Ich bekomme jedoch die Tabelle nicht aufgebaut, da scheinbar das JSON nicht das richtige Format hat, denke ich mal… Ich habe in meiner Tabelle die Werte mit den Namen „url“ und „fileName“. Die JSON sieht laut Netzwerkanalyse wie folgt aus:

```auto
{"entity":"media","total":1,"aggregations":[],"page":1,"limit":null,"elements":{"0c62448c9abf4ea3872fa2c6a56bdd2d":{"userId":null,"mimeType":"image\/png","fileExtension":"png","fileSize":549,"title":null,"metaData":{"type":3,"width":32,"height":32},"mediaType":{"name":"IMAGE","flags":["transparent"],"extensions":[]},"uploadedAt":"2022-12-10T16:21:56.967+00:00","alt":null,"url":"http:\/\/localhost\/media\/ec\/f8\/d2\/1670689316\/favicon.png","fileName":"favicon","user":null,"translations":null,"categories":null,"productManufacturers":null,"productMedia":null,"avatarUser":null,"thumbnails":[],"mediaFolderId":"0eb144799aee4e3eb648b31e31581d77","mediaFolder":null,"hasFile":true,"private":false,"propertyGroupOptions":null,"mailTemplateMedia":null,"tags":null,"thumbnailsRo":"O:77:\u0022Shopware\\Core\\Content\\Media\\Aggregate\\MediaThumbnail\\MediaThumbnailCollection\u0022:2:{s:11:\u0022\u0000*\u0000elements\u0022;a:0:{}s:13:\u0022\u0000*\u0000extensions\u0022;a:0:{}}","documentBaseConfigs":null,"shippingMethods":null,"paymentMethods":null,"productConfiguratorSettings":null,"orderLineItems":null,"cmsBlocks":null,"cmsSections":null,"cmsPages":null,"documents":null,"appPaymentMethods":null,"_uniqueIdentifier":"0c62448c9abf4ea3872fa2c6a56bdd2d","versionId":null,"translated":{"alt":null,"title":null,"customFields":[]},"createdAt":"2022-12-10T16:21:56.896+00:00","updatedAt":"2022-12-10T16:21:56.998+00:00","extensions":{"foreignKeys":{"apiAlias":null,"extensions":[]}},"id":"0c62448c9abf4ea3872fa2c6a56bdd2d","customFields":null}},"extensions":[],"states":[]}

```

Noch eine Idee? Es klappt mir der Beispiel JSON: `$result = [[ "url"=> "Hans", "fileName"=> "xyz"], ["url"=> "Wurst", "fileName"=>"asdf"] ];`

---

<div class="post-metadata">

**Author:** ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)\
**Post date:** [6. Februar 2023 um 10:03 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/11 "2023-02-06T10:03:21Z")

</div>

> [@hoyohoo](#):
>
> da scheinbar das JSON nicht das richtige Format hat

Das kannst du ja sehr leicht prüfen, indem du das JSON in einen Validator packst.

Auf Seiten von VueJS ist es Vue ja völlig egal, was für ein Format das JSON hat, solange es valide ist. Du kannst die Daten ja „biegen und brechen“ wie du möchtest.

---

<div class="post-metadata">

**Author:** ![hoyohoo](https://avatars.discourse-cdn.com/v4/letter/h/67e7ee/32.png) [@hoyohoo](https://forum.shopware.com/u/hoyohoo)\
**Post date:** [6. Februar 2023 um 10:16 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/12 "2023-02-06T10:16:23Z")

</div>

Ich denke ich habe es endlich hinbekommen. Habe es umgeändert:

```auto
$criteria = new Criteria();
$products = $this->productRepository->search($criteria, $context);
$products = $products->getEntities()->getElements();

```

Durch das getElements() hat es nun geklappt und mir werden alle Bilder anhand ihrer Namen und URLs angezeigt.

Danke für deine Unterstützung

---

<div class="post-metadata">

**Author:** ![hoyohoo](https://avatars.discourse-cdn.com/v4/letter/h/67e7ee/32.png) [@hoyohoo](https://forum.shopware.com/u/hoyohoo)\
**Post date:** [6. Februar 2023 um 12:18 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/13 "2023-02-06T12:18:16Z")

</div>

Hi, ich noch mal, eine Sache, die ich nicht verstehe und die mich beschäftigt: Wenn ich eines der Default Bilder von dockware lösche, bleibt das ergebnis dennoch in der Liste, obwohl die URL nirgendwo mehr hinführt. Auch das Boolean „hasFile“ dass eigentlich zur Laufzeit berechnet werden soll, hat den Wert True.  
Eine Idee, warum sich das nicht aktuallisiert?

---

<div class="post-metadata">

**Author:** ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)\
**Post date:** [6. Februar 2023 um 12:31 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/14 "2023-02-06T12:31:44Z")

</div>

Auch, wenn du den Cache geleert hast?

---

<div class="post-metadata">

**Author:** ![hoyohoo](https://avatars.discourse-cdn.com/v4/letter/h/67e7ee/32.png) [@hoyohoo](https://forum.shopware.com/u/hoyohoo)\
**Post date:** [6. Februar 2023 um 12:46 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/15 "2023-02-06T12:46:45Z")

</div>

Ja genau. Ich habe die Datei überFilezilla gelöscht, habe mich eingewählt in 127.0.0.2:22 mit user und Passwort = dockware

Muss ich die komplette Ordnerstruktur löschen? Ich habe bisher nur die demostore-logo.png entfernt.

EDIT: Hier mal ein Ausschnitt meiner Liste:

 ![grafik](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/3X/2/8/28a23107631ee6f3bbf778b272bb1df0eeaebf68.png)

Ich habe 18 Elemente in der Liste. Ich weiß nicht, ob das überhaupt stimmt. Ist halt die Beispielinstallation, noch habe ich keine eigenen Bilder eingefügt

---

<div class="post-metadata">

**Author:** ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)\
**Post date:** [6. Februar 2023 um 14:13 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/16 "2023-02-06T14:13:26Z")

</div>

Nutze Dockware nicht, kann dir da leider nicht weiterhelfen. Ggf. ist die Datei noch im Browser-Cache gespeichert.

---

<div class="post-metadata">

**Author:** ![hoyohoo](https://avatars.discourse-cdn.com/v4/letter/h/67e7ee/32.png) [@hoyohoo](https://forum.shopware.com/u/hoyohoo)\
**Post date:** [6. Februar 2023 um 14:27 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/17 "2023-02-06T14:27:11Z")

</div>

Na ja, dockware ist halt eine lokale Shopware installation. Ich brauche halt dann keinen Onlinespeicher.

Gibt es denn einen Befehl zum löschen von Medien? Ich habe bisher einfach die Datei im entsprechenden Ordner gelöscht, doch das System behölt den „hasFile“ Zustand als true bei und mal kann tatsächlich die Datei auch wieder „generieren“ durch ./bin/console Befehle. Welche genau, weiß ich gerade nicht, aber ich habe 2-3 ausgeführt und die Datei war wieder da.

Das ist echt frustrierend.

Mein Ziel ist übrigens nicht die Auflistung aller Mediendateien, sondern nur von denen, die Fehlerhaft sind. Diesen Zustand versuche ich eben gerade nachzustellen, doch es mislingt.

---

<div class="post-metadata">

**Author:** ![hoyohoo](https://avatars.discourse-cdn.com/v4/letter/h/67e7ee/32.png) [@hoyohoo](https://forum.shopware.com/u/hoyohoo)\
**Post date:** [6. Februar 2023 um 17:55 UTC](https://forum.shopware.com/t/verstaendnisfrage-zum-tutorial-zu-reading-data/98317/18 "2023-02-06T17:55:03Z")

</div>

Hallo noch mal, ich bin das ganze wohl falsch angegangen. Ich habe ja bereits mein Array, wo alle Medienelemente drin stecken. Es muss eine Möglichkeit geben, per php zu prüfen, ob die Dateien, die in diesem Array stecken, auch wirklich noch vorhanden sind. Ich denke, das wird mit is\_File() gehen. Ich muss nur noch eine Möglichkeit finden, durch mein „Array“ zu iterieren. Ich weiß nämlich noch immer nicht, wie genau ich das anstelle. Es ist scheinbar ein Array mit Object Elementen, die Object Elemente enthalten sehr viele Informationen. Jedes Object repräsentiert dabei eine Mediendatei.
