# Config | Computed default

**URL:** https://forum.shopware.com/t/config-computed-default/61609
**Category:** Programmierung
**Created:** [7. September 2019 um 13:10 UTC](https://forum.shopware.com/t/config-computed-default/61609 "2019-09-07T13:10:42Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![Nordisch](https://avatars.discourse-cdn.com/v4/letter/n/f08c70/32.png) [@Nordisch](https://forum.shopware.com/u/Nordisch)
#### Post date: [7. September 2019 um 13:10 UTC](https://forum.shopware.com/t/config-computed-default/61609/1 "2019-09-07T13:10:42Z")

</div>

Moin,

ich benötige einen Hash im Plugin Formular. Dieser muss bei Installation generiert werden.  
Eigentlich gar nicht so kompliziert. In der Plugin Base Class mittels install(…) Methode den Config Value des Input manipulieren.

Mein Ansatz funktioniert, fühlt sich aber total falsch und fehleranfällig an. Was wenn sich das Interface ändert etc.

```
container->get(Connection::class);
        $configRepository = $this->container->get('system_config.repository');
        $systemConfigService = new SystemConfigService($connection, $configRepository);

        $hash = md5((string)time());
        $systemConfigService->set('NordischMyPlugin.config.myHash', $hash);
    }
}

```

Ich würde ja gerne über den Container auf den Service zugreifen, dieser ist aber `private` und somit nicht erreichbar. Ich kann ihn zwar in einem eigenen Service über die service.xml reinreichen aber ich wüsste nicht, wie ich das in der Plugin Base Class erreichen könnte.&nbsp;

```
$this->container->get(Shopware\Core\System\SystemConfig\SystemConfigService::class);

```

Irgendweile Vorschläge ? 🙂

---

<div class="post-metadata">

### Author: ![Moorleiche](https://avatars.discourse-cdn.com/v4/letter/m/6f9a4e/32.png) [@Moorleiche](https://forum.shopware.com/u/Moorleiche)
#### Post date: [8. September 2019 um 01:23 UTC](https://forum.shopware.com/t/config-computed-default/61609/2 "2019-09-08T01:23:34Z")

</div>

@Nordisch‍

Ich danke dir erstmal für diesen schönen Lösungsansatz, da ich schon am überlegen war, wie ich bei einer Plugin-Installation am besten Default-Werte für meine Config setze 😉

Bei CustomFields ist es genau so ein “gefruckel” also würde mal deine Lösung als legit betrachten 😛

Ich habe auch in einem meiner Plugins einen md5() Hash erstellt und der Code Review von Shopware hat da wohl ein Problem mit…&nbsp;Alternative hier wäre Uuid() zu nutzen&nbsp;

---

<div class="post-metadata">

### Author: ![Nordisch](https://avatars.discourse-cdn.com/v4/letter/n/f08c70/32.png) [@Nordisch](https://forum.shopware.com/u/Nordisch)
#### Post date: [8. September 2019 um 09:38 UTC](https://forum.shopware.com/t/config-computed-default/61609/3 "2019-09-08T09:38:02Z")

</div>

Danke für dein Feedback @Moorleiche‍.

Super Tipp mit der Code Review. Wüsste zwar nicht warum die Funktion nicht gewünscht ist, hatte meine Implementierung aber auch schon auf die `Uuid::randomHex()` angepasst. Wenn sich die Shopware Entwickler da so viel Mühe machen, dann sollte man das auch nutzen 🙂

---

<div class="post-metadata">

### Author: ![shyim](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/shyim/32/7681_2.png) [@shyim](https://forum.shopware.com/u/shyim)
#### Post date: [8. September 2019 um 12:14 UTC](https://forum.shopware.com/t/config-computed-default/61609/4 "2019-09-08T12:14:41Z")

</div>

@Moorleiche‍ die MD5 Warnung wird noch ausgebaut.

@Nordisch‍ leg es direkt via Repository an. Der Konstruktor wird nicht als “Public API” angesehn, und kann deshalb je releases abweichen, dann würde dein Code brechen :).&nbsp;

---

<div class="post-metadata">

### Author: ![Nordisch](https://avatars.discourse-cdn.com/v4/letter/n/f08c70/32.png) [@Nordisch](https://forum.shopware.com/u/Nordisch)
#### Post date: [9. September 2019 um 16:38 UTC](https://forum.shopware.com/t/config-computed-default/61609/5 "2019-09-09T16:38:35Z")

</div>

Hey @Shyim‍,

ich habe versucht es etwas generischer zu gestalten, damit man das vielleicht&nbsp;wiederverwenden kann:

```
    public function install(InstallContext $context): void
    {
        parent::install($context);

        $this->setDefaultConfigValue(
            'MeinPlugin.config.myField',
            Uuid::randomHex(),
            true
        );
    }

    private function setDefaultConfigValue($key, $value, $renew = false): void
    {
        $data = [
            'configurationKey' => $key,
            'configurationValue' => $value
        ];

        $defaultContext = Context::createDefaultContext();

        /** @var EntityRepository $repository */
        $repository = $this->container->get('system_config.repository');

        $criteria = new Criteria();
        $criteria->addFilter(
            new EqualsFilter('configurationKey', $key)
        );

        $config = $repository->search($criteria, $defaultContext);
        if ($config->getTotal() === 0) {
            $repository->create([$data], $defaultContext);
            return;
        }

        if ($config->getTotal() > 0 && $renew === true) {
            $data['id'] = $config->first()->getId();
            $repository->update([$data], $defaultContext);
        }
    }

```

&nbsp;

---

<div class="post-metadata">

### Author: ![Michael\_Telgmann](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/michael_telgmann/32/20289_2.png) [@Michael\_Telgmann](https://forum.shopware.com/u/Michael_Telgmann)
#### Post date: [10. September 2019 um 08:48 UTC](https://forum.shopware.com/t/config-computed-default/61609/6 "2019-09-10T08:48:42Z")

</div>

Hallo,

so setzen wir z.B. in unserem PayPal Plugin die Default Config:&nbsp;[SwagPayPal/InstallUninstall.php at master · shopwareLabs/SwagPayPal · GitHub](https://github.com/shopwareLabs/SwagPayPal/blob/master/src/Util/Lifecycle/InstallUninstall.php#L98)

Viele Grüße aus Schöppingen

![cool](http://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/shopware.png "cool")&nbsp;Michael Telgmann

---

<div class="post-metadata">

### Author: ![Moorleiche](https://avatars.discourse-cdn.com/v4/letter/m/6f9a4e/32.png) [@Moorleiche](https://forum.shopware.com/u/Moorleiche)
#### Post date: [10. September 2019 um 13:28 UTC](https://forum.shopware.com/t/config-computed-default/61609/7 "2019-09-10T13:28:21Z")

</div>

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

Rocket Science

Wie wäre es, wenn man die Default Config auch über die config.xml anlegt? oO

---

<div class="post-metadata">

### Author: ![Michael\_Telgmann](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/michael_telgmann/32/20289_2.png) [@Michael\_Telgmann](https://forum.shopware.com/u/Michael_Telgmann)
#### Post date: [10. September 2019 um 13:43 UTC](https://forum.shopware.com/t/config-computed-default/61609/8 "2019-09-10T13:43:22Z")

</div>

Hallo,

Dafür gibt es bereits ein Ticket&nbsp; ![Wink](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/b3785da0cbf2c8566cb535dcf55b2730b5224899.png "Wink")&nbsp;[Shopware Issuetracker](https://issues.shopware.com/issues/NEXT-3647)

Viele Grüße aus Schöppingen

![cool](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/86c57fbace799dd4eb1f1b8a2d3bdc1733f0aea1.png "cool")&nbsp;Michael Telgmann
