Eine Plugin-Einstellungsseite erstellen
Viele Plugins benötigen eine Einstellungsseite, damit Benutzer Parameter konfigurieren können — z. B. API-Keys von Drittanbieter-Services, Webhook-Adressen usw. Dieses Beispiel zeigt, wie Sie mit pluginSettingsManager + React-Component + ctx.api eine vollständige Plugin-Einstellungsseite erstellen.
Dieses Beispiel verwendet keine FlowEngine, sondern eine reine Kombination aus Plugin + Router + Component + Context.
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 - Router — Registrierung der Einstellungsseite mit
pluginSettingsManager - Component-Entwicklung — Schreibweise von React-Components und useFlowContext
- i18n Internationalisierung — Schreibweise von Übersetzungsdateien und Verwendung von
useT()
Endergebnis
Wir erstellen eine Einstellungsseite „Externe Service-Konfiguration":
- erscheint im Menü „Plugin-Konfiguration"
- bietet eine Formular-UI mit Antd Form
- ruft Konfigurationen über
ctx.apiaus dem Backend ab und speichert sie - gibt nach erfolgreichem Speichern einen Hinweis aus

Vollständigen Quellcode siehe @nocobase-example/plugin-settings-page. 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:
Dies erzeugt unter packages/plugins/@my-project/plugin-settings-page die Grundstruktur einschließlich src/client-v2/, src/server/, src/locale/ u. a. Detaillierte Erläuterungen siehe Erstes Plugin schreiben.
Schritt 2: Einstellungsseite registrieren
Bearbeiten Sie src/client-v2/plugin.tsx und registrieren Sie in load() über this.pluginSettingsManager die Einstellungsseite. Zwei Schritte: zuerst über addMenuItem() den Menüeintrag registrieren, dann über addPageTabItem() die eigentliche Seite:
Nach der Registrierung erscheint im Menü „Plugin-Konfiguration" der Eintrag „Externe Service-Konfiguration", oben befinden sich zwei Tabs — „API-Konfiguration" und „Über". Wenn unter dem Menü nur eine Seite vorhanden ist, wird die Tab-Leiste automatisch ausgeblendet; hier sind zwei Seiten registriert, daher wird sie automatisch angezeigt. this.t() verwendet automatisch den Plugin-Paketnamen als i18n-Namespace, Details siehe Context → Häufige Fähigkeiten.

Schritt 3: Component der Einstellungsseite schreiben
Erstellen Sie src/client-v2/pages/ExternalApiSettingsPage.tsx. Die Einstellungsseite ist ein gewöhnliches React-Component; hier verwenden wir Form und Card von Antd für die UI, useFlowContext(), um über ctx.api mit dem Backend zu kommunizieren, und useT(), um die Übersetzungsfunktion zu erhalten.
Wichtige Punkte:
useFlowContext()— Import aus@nocobase/flow-engine, liefertctx.apiund weitere KontextfähigkeitenuseT()— auslocale.tsimportierter Übersetzungs-Hook, bereits an den Plugin-Namespace gebunden, Details siehe i18n InternationalisierunguseRequest()— aus ahooks, behandelt Loading- und Error-Zustände einer Anfrage.manual: truebedeutet keine automatische Anfrage;run()muss manuell aufgerufen werdenctx.api.request()— Verwendung wie bei Axios, NocoBase fügt Authentifizierungsinformationen automatisch hinzu
Schritt 4: 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 sowie zur Verwendung von useT(), tExpr() u. a. siehe i18n Internationalisierung.
Schritt 5: Server-Schnittstellen
Das Formular auf der Client-Seite benötigt im Backend zwei Schnittstellen: externalApi:get und externalApi:set. Der serverseitige Teil ist nicht aufwendig — eine Datentabelle für die Konfiguration definieren und zwei Schnittstellen registrieren.
Datentabelle definieren
Erstellen Sie src/server/collections/externalApiSettings.ts. NocoBase lädt automatisch die Collection-Definitionen unter diesem Verzeichnis:
Resource und Schnittstellen registrieren
Bearbeiten Sie src/server/plugin.ts und registrieren Sie über resourceManager.define() die Resource, dann konfigurieren Sie die ACL-Berechtigungen:
Wichtige Punkte:
ctx.db.getRepository()— holt über den Collection-Namen das Datenoperations-Objektctx.action.params.values— der Body einer POST-Anfrageacl.allow()—'loggedIn'bedeutet, dass eingeloggte Benutzer Zugriff haben. Da fürsetkein explizites allow gesetzt ist, kann standardmäßig nur ein Administrator die Schnittstelle aufrufenawait next()— muss am Ende jeder Action aufgerufen werden, eine Konvention der Koa-Middleware
Schritt 6: „Über"-Seite schreiben
In Schritt 2 haben wir zwei Tabs registriert. Das Component für „API-Konfiguration" wurde in Schritt 3 erstellt; nun schreiben wir die Seite für den Tab „Über".
Erstellen Sie src/client-v2/pages/AboutPage.tsx:
Diese Seite ist sehr einfach — sie verwendet Descriptions von Antd, um Plugin-Informationen anzuzeigen. In tatsächlichen Projekten kann der „Über"-Tab Versionsnummern, Changelogs, Hilfelinks usw. enthalten.
Schritt 7: Plugin aktivieren
Aktivieren Sie das Plugin, aktualisieren Sie die Seite, und im Menü „Plugin-Konfiguration" erscheint der Eintrag „Externe Service-Konfiguration".

Vollständiger Quellcode
- @nocobase-example/plugin-settings-page — Vollständiges Beispiel einer Plugin-Einstellungsseite
Zusammenfassung
In diesem Beispiel verwendete Fähigkeiten:
Verwandte Links
- Erstes Plugin schreiben — Plugin-Gerüst von Grund auf erstellen
- Plugin — Plugin-Einstiegspunkt und Lebenszyklus
- Router — Seitenrouten und Registrierung der Plugin-Einstellungsseite
- Context → Häufige Fähigkeiten — ctx.api, ctx.t usw.
- Component-Entwicklung — Schreibweise von React-Components
- Server-Entwicklungs-Übersicht — Backend-Schnittstellen definieren
- i18n Internationalisierung — Schreibweise von Übersetzungsdateien
- i18n Internationalisierung (Server) — Serverseitige Übersetzung

