Grundlagen

Modulkonfiguration lesen

Eine detaillierte Erklärung unseres Config-Services findest Du hier.

Konfigurationswert abrufen

Um die Modulkonfiguration zu nutzen, kannst Du einfach die folgende Funktion verwenden.

Der erste Parameter definiert den Config-Key, der zweite die Saleschannel-ID (false, wenn der Channel automatisch erkannt werden soll, Standard) und der dritte definiert den Standardwert, falls dieser Config-Wert noch nicht konfiguriert wurde.

$configValue = app(ConfigService::class)->get('core.domain.status', false, null);

Um einen Config-Wert in einem Twig-Template abzurufen, kannst Du diese Funktion mit denselben Parametern verwenden:

{% set configValue = config('core.domain.status', false, null) %}

Auf das Speichern der Konfiguration hören

Lies zuerst unsere Dokumentation zum Hören auf Events. Das ist nur ein kurzes Beispiel.

Erstelle in Deinem Modulverzeichnis unter /Providers/ einen Event Service Provider, z. B.:

HwMollieEventServiceProvider.php

<?php

namespace custom\modules\HwMollie\Providers;

use App\Events\ConfigElementsChangedEvent;
use custom\modules\HwMollie\Listeners\ConfigChangedListener;
use Illuminate\Foundation\Support\Providers\EventServiceProvider;

class HwMollieEventServiceProvider extends EventServiceProvider
{
    protected $listen = [
        ConfigElementsChangedEvent::class => [
            ConfigChangedListener::class // This is the event listener you have to create in the next step!
        ]
    ];
}

Füge jetzt Deinen Event Service Provider in der modules.json als untergeordneten Eintrag zum Parameter "providers" hinzu, z. B.:

{
    ...
    "providers": [
        "custom\\modules\\HwMollie\\Providers\\HwMollieServiceProvider", // This is default
        "custom\\modules\\HwMollie\\Providers\\HwMollieEventServiceProvider" // This is the event service listener you just created
    ],
    ...
}

In Deinem Event-Listener kannst Du das ConfigElementsChanged-Event behandeln und prüfen, ob eine Konfiguration Deines Moduls geändert wurde.

Beachte bitte, dass jede Konfigurationsänderung dieses Event auslöst, auch von anderen Modulen. Deshalb musst Du prüfen, ob ein Config-Eintrag Deines Moduls geändert wurde.

<?php

namespace custom\modules\HwMollie\Listeners;

use App\Events\ConfigElementsChangedEvent;
use custom\modules\HwMollie\Service\PaymentMethodService;
use Illuminate\Support\Str;

class ConfigChangedListener {
    public function handle(ConfigElementsChangedEvent $event) {
        $mollieChanged = false;

        foreach ($event->payload as $payloadItem) {
            if (Str::contains($payloadItem['key'], "HwMollie.")) { // Enter your module name here
                $mollieChanged = true;
            }
        }

        if ($mollieChanged) {
            // if any mollie key got changed, execute a custom action!

            //$paymentMethodService = app(PaymentMethodService::class);
            //$paymentMethodService->installOrUpdateHandlers();
        }
    }
}
War das hilfreich?