# Freitextfeld aus Artikel via Repository lesen

**URL:** <https://forum.shopware.com/t/freitextfeld-aus-artikel-via-repository-lesen/51833>\
**Category:** Programmierung\
**Created:** [17. März 2018 um 08:01 UTC](https://forum.shopware.com/t/freitextfeld-aus-artikel-via-repository-lesen/51833 "2018-03-17T08:01:34Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [17. März 2018 um 08:01 UTC](https://forum.shopware.com/t/freitextfeld-aus-artikel-via-repository-lesen/51833/1 "2018-03-17T08:01:34Z")

</div>

Hallo,

ich hole mir in PHP ein Artikelobjekt wie folgt

```
/** @var ModelManager $entityManager */
$entityManager = Shopware()->Container()->get('models');

$articleDetailsRepositoy = $entityManager->getRepository(Detail::class);

/** @var \Shopware\Models\Article\Detail $articleDetail */
$articleDetail = $articleDetailsRepositoy->findOneBy(['number' => $itemnumber]);

```

wie bekomme ich aus diesem Artikelobjekt nun meine Freitextfelder raus? Ich habe leider keinen passenden Getter gefunden…

habe jetzt folgende Dinge ausprobiert:

&nbsp;

$article-\>getArticleDetail()-\>getAttribute()-\>getAttr1();  
$article-\>getAttribute()-\>getAttr1();  
$article-\>getArticleDetail()-\>getAttributes()[‘core’]-\>get(‘attr1’);  
$article-\>getAttributes()[‘core’]-\>get(‘attr1’);  
$article-\>getAttr1();  
$article-\>getArticleDetail()-\>getAttr1();  
$article-\>getAttribute('attr1);  
$article-\>getArticleDetail()-\>getAttribute(‘attr1’);

&nbsp;

nichts davon funktioniert! Diese ganzen Methoden sind nicht bekannt oder liefern bei getAttribute() schon NULL … Was mach ich denn falsch?

---

<div class="post-metadata">

**Author:** ![Shopwareianer](https://avatars.discourse-cdn.com/v4/letter/s/b4bc9f/32.png) [@Shopwareianer](https://forum.shopware.com/u/Shopwareianer)\
**Post date:** [17. März 2018 um 08:45 UTC](https://forum.shopware.com/t/freitextfeld-aus-artikel-via-repository-lesen/51833/2 "2018-03-17T08:45:05Z")

</div>

Was ist denn überhaupt die Ausgabe von&nbsp;$article und wo sind die Attributes? Dump das doch mal.

Hol dir den Artikel bzw. die Attribute eines Artikels&nbsp;doch wie folgt:

```
        $article = $this->getModelManager()->getRepository( \Shopware\Models\Article\Article::class)->findOneBy(['id' => $id]);
        var_dump($article->getAttribute()->getAttr1());
        die();

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [17. März 2018 um 08:50 UTC](https://forum.shopware.com/t/freitextfeld-aus-artikel-via-repository-lesen/51833/3 "2018-03-17T08:50:46Z")

</div>

@Shopwareianer‍

$article ist mein Artikel, das funktioniert denn ich hole mir auch schon Bezeichnungen und Preise aus dem Objekt.

Ich müsste nun nur noch das eine Freitextfeld bekommen…

```
 $article-\>getAttribute() ist NULL
```

---

<div class="post-metadata">

**Author:** ![Shopwareianer](https://avatars.discourse-cdn.com/v4/letter/s/b4bc9f/32.png) [@Shopwareianer](https://forum.shopware.com/u/Shopwareianer)\
**Post date:** [17. März 2018 um 08:52 UTC](https://forum.shopware.com/t/freitextfeld-aus-artikel-via-repository-lesen/51833/4 "2018-03-17T08:52:17Z")

</div>

> [@FloC3 schrieb:](https://forum.shopware.com/profile/27446/FloC3 "FloC3")
> 
> $article ist mein Artikel, das funktioniert denn ich hole mir auch schon Bezeichnungen und Preise aus dem Objekt.
> 
> Ich müsste nun nur noch das eine Freitextfeld bekommen…

Das ist mir schon klar. Aber nochmal: Dump doch mal den Artikel und schau dir die Ausgabe an. Wo sind die Attribute? Sind die protected? Dann hol sie dir über einen getter. Wie man sich die Freitextfelder über das Article Model holt habe ich oben noch beschrieben/editiert.&nbsp;

Hier nochmal:

```
$article = $this->getModelManager()->getRepository( \Shopware\Models\Article\Article::class)->findOneBy(['id' => $id]);
var_dump($article->getAttribute()->getAttr1());
die();

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [17. März 2018 um 09:30 UTC](https://forum.shopware.com/t/freitextfeld-aus-artikel-via-repository-lesen/51833/5 "2018-03-17T09:30:24Z")

</div>

@Shopwareianer‍

var\_dump kann ich leider nicht ausführen, dann stürzt die Einkaufswelt ab (the server responded with a status of 500 (Internal Server Error)…&nbsp;

aber wie gesagt…&nbsp;$article-\>getAttribute()-\>getAttr1() funktioniert nicht, da&nbsp;$article-\>getAttribute() bereits NULL liefert.

Warum sollten sie protected sein? Das muss doch Shopware-Standardcode sein…

---

<div class="post-metadata">

**Author:** ![Shopwareianer](https://avatars.discourse-cdn.com/v4/letter/s/b4bc9f/32.png) [@Shopwareianer](https://forum.shopware.com/u/Shopwareianer)\
**Post date:** [17. März 2018 um 12:55 UTC](https://forum.shopware.com/t/freitextfeld-aus-artikel-via-repository-lesen/51833/6 "2018-03-17T12:55:44Z")

</div>

Also ohne var\_dump / dump&nbsp;kann man dann ja nur raten …

Ob die EK abschmiert, oder nicht ist ja erst einmal egal. Es geht ja hier nur um’s dumpen.&nbsp;

Nachdem dump müsstest du vermutlich noch nen die() machen, damit du den dump angezeigt bekommst.

Mit meinen oben genannten Code kommst du in jedem Fall an die Attribute ran.

---

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [19. März 2018 um 09:25 UTC](https://forum.shopware.com/t/freitextfeld-aus-artikel-via-repository-lesen/51833/7 "2018-03-19T09:25:16Z")

</div>

@Shopwareianer‍

ich hab den var\_dump + die() jetzt gemacht. Aber das ergebnis ist genau das, was ich gesagt habe:

```
 var\_dump($article-\>getAttribute()); --\> NULL

```

$article an sich kann ich nicht dumpen, da sonst wie gesagt die Seite abstürzt und einen 500 Error bekommt…

---

<div class="post-metadata">

**Author:** ![Shopwareianer](https://avatars.discourse-cdn.com/v4/letter/s/b4bc9f/32.png) [@Shopwareianer](https://forum.shopware.com/u/Shopwareianer)\
**Post date:** [19. März 2018 um 10:01 UTC](https://forum.shopware.com/t/freitextfeld-aus-artikel-via-repository-lesen/51833/8 "2018-03-19T10:01:30Z")

</div>

> [@FloC3 schrieb:](https://forum.shopware.com/profile/27446/FloC3 "FloC3")
> 
> @Shopwareianer‍
> 
> ich hab den var\_dump + die() jetzt gemacht. Aber das ergebnis ist genau das, was ich gesagt habe:
> 
> var\_dump($article-\>getAttribute()); –\> NULL
> 
> $article an sich kann ich nicht dumpen, da sonst wie gesagt die Seite abstürzt und einen 500 Error bekommt…

Aber $article musst du doch dumpen können? Ansonsten weißt du ja garnicht, was drin ist. Dann kann man die ganze Zeit natürlich nur raten, wenn man nicht weiß was drin ist.

Du bekommst auch nen 500er, wenn du danach nen die() machst? Was sagt denn der Server Log zum 500er? Hast du alle Debug Meldungen im FE an, sodass diese dir auch angezeigt werden?&nbsp;

---

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [19. März 2018 um 10:04 UTC](https://forum.shopware.com/t/freitextfeld-aus-artikel-via-repository-lesen/51833/9 "2018-03-19T10:04:50Z")

</div>

@Shopwareianer‍

Nein, das lässt sich nicht dumpen. Offensichtlich streikt der Shop, sobald die zu dumpenden Daten etwas größer als ein&nbsp;String sind… Auch mit einem die() direkt danach, kommt ein 500er

Debug-Meldungen sind so konfiguriert:

'_front’ =\> [  
&nbsp; &nbsp; &nbsp; &nbsp; ‚noErrorHandler‘ =\> false,  
&nbsp; &nbsp; &nbsp; &nbsp; ‚throwExceptions‘ =\> true,  
&nbsp; &nbsp; &nbsp; &nbsp; ‚disableOutputBuffering‘ =\> false,  
&nbsp; &nbsp; &nbsp; &nbsp; ‚showException‘ =\> true,  
&nbsp; &nbsp; &nbsp; &nbsp; ‚charset‘ =\> ‚utf-8‘  
&nbsp; &nbsp; ],  
&nbsp; &nbsp; ‚phpsettings‘ =\> [  
&nbsp; &nbsp; &nbsp; &nbsp; ‚display\_errors‘ =\> 1,  
&nbsp; &nbsp; ]_

&nbsp;

**EDIT** :

habe nun das Laden des Artikels umgestellt auf folgende Logik:

_/\*\* @var ContextServiceInterface $contextService \*/  
$contextService = Shopware()-\>Container()-\>get(‚shopware\_storefront.context\_service‘);  
$context = $contextService-\>getShopContext();  
/\*\* @var ProductService $productService \*/  
$productService = Shopware()-\>Container()-\>get(‚shopware\_storefront.product\_service‘);  
/\*\* @var Product $product \*/  
$product = $productService-\>get($itemnumber, $context);_

_echo product-\>getAttribute(‚core‘)-\>get(‚attr1‘);_

&nbsp;

das funktioniert jetzt! Offenbar werden bei meiner vorherigen Lademethode keine Attribute geladen…
