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();
}
}
}