5. Erweiterung für Entwickler

Das Admin Aktivitätsprotokoll stellt eine öffentliche PHP-Extension-API bereit, mit der Entwickler eigene Entitäten für die Protokollierung registrieren können. Registrierte Entitäten erscheinen automatisch in der Plugin-Konfiguration und werden vollständig in der Protokollierung erfasst.

Interface implementieren

Erstellen Sie eine Klasse, die TrackableEntityProviderInterface implementiert:

use Momocode\MomoAdminActivityLog\Extension\TrackableEntityProviderInterface;
use Shopware\Core\Framework\Context;
use Shopware\Core\Framework\DataAbstractionLayer\EntityWriteResult;

class MyCustomEntityProvider implements TrackableEntityProviderInterface
{
    public function getEntityName(): string
    {
        // DAL-Entitätsname (entspricht dem Tabellennamen)
        return 'my_custom_entity';
    }

    public function getLabel(): string
    {
        // Lesbarer Name, der in der Plugin-Konfiguration angezeigt wird
        return 'Meine benutzerdefinierte Entität';
    }

    public function resolveDisplayName(string $entityId, EntityWriteResult $writeResult, Context $context): ?string
    {
        // Optional: lesbaren Anzeigenamen für einen Protokolleintrag zurückgeben.
        // Wird aufgerufen, wenn ein Eintrag angelegt wird.
        // Gibt null zurück, wenn kein Name aufgelöst werden kann (Fallback auf die ID).
        return null;
    }

    public function getAdminRoute(): ?string
    {
        // Optional: Vue-Router-Route zur Detailseite der Entität.
        // Wird für Deep-Links in der Protokoll-Listenansicht verwendet.
        // Format: 'sw.my.custom.entity.detail'
        // Gibt null zurück, wenn keine Detailseite vorhanden ist.
        return null;
    }
}

Service registrieren

Registrieren Sie den Provider in Ihrer services.xml mit dem Tag momo.activity_log.entity_provider:

Das ist alles – der Compiler Pass des Plugins registriert den Provider automatisch. Beim nächsten Container-Build wird die Entität in die Protokollierung aufgenommen.

Ergebnis

Nach der Registrierung:

  • Erscheint die Entität in der Plugin-Konfiguration unter Überwachte Entitäten und kann dort aktiviert oder deaktiviert werden

  • Werden alle Schreibvorgänge auf diese Entität automatisch protokolliert, sobald sie in der Konfiguration ausgewählt ist

  • Werden Anzeigenamen (sofern resolveDisplayName() implementiert) in der Listenansicht angezeigt

  • Werden Deep-Links (sofern getAdminRoute() implementiert) in der Listenansicht als klickbare Links gerendert

Hinweise

  • Die Methoden resolveDisplayName() und getAdminRoute() sind optional. Wenn sie null zurückgeben, zeigt das Plugin die Entitäts-ID als Klartext an.

  • Das Interface befindet sich im Namespace Momocode\MomoAdminActivityLog\Extension.

  • Der Service-Tag momo.activity_log.entity_provider muss exakt so geschrieben sein – andernfalls wird der Provider vom Compiler Pass nicht erkannt.

Last updated