Einen benutzerdefinierten Aktionsbutton erstellen
In NocoBase ist eine Aktion (Action) ein Button innerhalb eines Blocks, der eine Geschäftslogik auslöst — z. B. „Neu", „Bearbeiten", „Löschen". Dieses Beispiel zeigt, wie Sie mit ActionModel einen benutzerdefinierten Aktionsbutton erstellen und über ActionSceneEnum das Szenario steuern, in dem der Button erscheint.
Es empfiehlt sich, zunächst Folgendes zu kennen, damit die Entwicklung reibungsloser verläuft:
- Erstes Plugin schreiben — Plugin-Erstellung und Verzeichnisstruktur
- Plugin — Plugin-Einstiegspunkt und
load()-Lebenszyklus - FlowEngine → Aktions-Erweiterung — Einführung in ActionModel und ActionSceneEnum
- i18n Internationalisierung — Schreibweise von Übersetzungsdateien und verzögerte Übersetzung mit
tExpr()
Endergebnis
Wir erstellen drei benutzerdefinierte Aktionsbuttons, die jeweils einem der drei Aktionsszenarien entsprechen:
- Aktion auf Datentabellen-Ebene (
collection) — erscheint in der Aktionsleiste oben im Block, z. B. neben dem „Neu"-Button - Aktion auf Datensatz-Ebene (
record) — erscheint in der Aktionsspalte jeder Tabellenzeile, z. B. neben „Bearbeiten" und „Löschen" - Beide anwendbar (
both) — erscheint in beiden Szenarien
Vollständigen Quellcode siehe @nocobase-example/plugin-simple-action. Wenn Sie es lokal ausprobieren möchten:
Im Folgenden bauen wir dieses Plugin Schritt für Schritt von Grund auf auf.
Schritt 1: Plugin-Gerüst erstellen
Im Stammverzeichnis des Repositories ausführen:
Detaillierte Erläuterungen siehe Erstes Plugin schreiben.
Schritt 2: Aktionsmodelle erstellen
Jede Aktion muss das Szenario deklarieren, in dem sie erscheint, indem sie über die Eigenschaft static scene angegeben wird:
Aktion auf Datentabellen-Ebene
Erstellen Sie src/client-v2/models/SimpleCollectionActionModel.tsx:
Aktion auf Datensatz-Ebene
Erstellen Sie src/client-v2/models/SimpleRecordActionModel.tsx:
Beide Szenarien anwendbar
Erstellen Sie src/client-v2/models/SimpleBothActionModel.tsx:
Die Struktur der drei Schreibweisen ist identisch — der Unterschied liegt nur im Wert von static scene und im Button-Text. Jeder Button hört über registerFlow({ on: 'click' }) auf das Klick-Ereignis und gibt mit ctx.message einen Hinweis aus, sodass der Benutzer sieht, dass der Button tatsächlich funktioniert.
Schritt 3: Mehrsprachen-Dateien hinzufügen
Bearbeiten Sie die Übersetzungsdateien unter src/locale/ des Plugins:
Beim erstmaligen Hinzufügen einer Sprachdatei muss die Anwendung neu gestartet werden, damit sie wirksam wird.
Mehr zur Schreibweise von Übersetzungsdateien und zur Verwendung von tExpr() siehe i18n Internationalisierung.
Schritt 4: Im Plugin registrieren
Bearbeiten Sie src/client-v2/plugin.tsx und registrieren Sie über registerModelLoaders per Lazy Loading:
Schritt 5: Plugin aktivieren
Nach der Aktivierung können Sie unter „Aktion konfigurieren" eines Tabellenblocks diese benutzerdefinierten Aktionsbuttons hinzufügen.
Vollständiger Quellcode
- @nocobase-example/plugin-simple-action — Vollständiges Beispiel der drei Aktionsszenarien
Zusammenfassung
In diesem Beispiel verwendete Fähigkeiten:
Verwandte Links
- Erstes Plugin schreiben — Plugin-Gerüst von Grund auf erstellen
- FlowEngine-Übersicht — Grundlegende Verwendung von FlowModel
- FlowEngine → Aktions-Erweiterung — ActionModel, ActionSceneEnum
- FlowEngine → Block-Erweiterung — Benutzerdefinierte Blöcke
- FlowEngine → Feld-Erweiterung — Benutzerdefinierte Feld-Components
- Component vs FlowModel — Wann FlowModel verwenden
- Plugin — Plugin-Einstiegspunkt und load()-Lebenszyklus
- i18n Internationalisierung — Schreibweise von Übersetzungsdateien und Verwendung von tExpr
- Vollständige FlowEngine-Dokumentation — Vollständige Referenz zu FlowModel, Flow, Context

