Crear una página de configuración del plugin
Muchos plugins necesitan una página de configuración para que el usuario configure parámetros: la API Key de un servicio de terceros, una URL de webhook, etc. Este ejemplo muestra cómo crear una página de configuración completa con pluginSettingsManager + componente React + ctx.api.
Este ejemplo no usa FlowEngine: es solo Plugin + Router + Component + Context.
Se recomienda revisar antes los siguientes contenidos:
- Crear el primer plugin: creación del plugin y estructura de directorios.
- Plugin: entrada del plugin y ciclo de vida de
load(). - Router: registro de páginas de configuración con
pluginSettingsManager. - Desarrollo de Component: forma de escribir componentes React y
useFlowContext. - Internacionalización (i18n): archivos de traducción y uso de
useT().
Resultado final
Vamos a crear una página de configuración "External API Settings":
- Aparece en el menú "Configuración del plugin".
- La UI del formulario se construye con Antd Form.
- Se utiliza
ctx.apipara leer y guardar la configuración en el backend. - Se muestra un mensaje al guardar correctamente.

Código fuente completo en @nocobase-example/plugin-settings-page. Para ejecutarlo en local:
A continuación se construye el plugin paso a paso.
Paso 1: crear el esqueleto del plugin
Desde la raíz del repositorio:
Esto genera la estructura básica en packages/plugins/@my-project/plugin-settings-page, con los directorios src/client-v2/, src/server/, src/locale/, etc. Para más detalles, consulte Crear el primer plugin.
Paso 2: registrar la página de configuración
Edite src/client-v2/plugin.tsx y, en load(), registre la página de configuración con this.pluginSettingsManager. Son dos pasos: primero addMenuItem() para registrar la entrada del menú y luego addPageTabItem() para registrar la página real:
Tras el registro, en el menú "Configuración del plugin" aparecerá la entrada "External API Settings", con dos pestañas en la parte superior: "API Configuration" y "About". Cuando solo hay una página bajo el menú, la barra de pestañas se oculta automáticamente; aquí, al haber dos, se muestra. this.t() usa automáticamente como namespace de i18n el nombre del paquete del plugin actual; consulte Context → Capacidades comunes.

Paso 3: escribir el componente de la página de configuración
Cree src/client-v2/pages/ExternalApiSettingsPage.tsx. La página de configuración es un componente React común; aquí construimos la UI con Form y Card de Antd, useFlowContext() para acceder a ctx.api y comunicarnos con el backend, y useT() para obtener la función de traducción.
Puntos clave:
useFlowContext(): importado de@nocobase/flow-engine, permite acceder actx.apiy al resto del contexto.useT(): hook de traducción importado delocale.ts, ya enlazado al namespace del plugin. Consulte Internacionalización (i18n).useRequest(): viene de ahooks y gestiona los estados de loading/error de la petición.manual: trueindica que no se ejecuta de forma automática y debe llamarse arun()manualmente.ctx.api.request(): uso idéntico al de Axios; NocoBase incluye automáticamente la información de autenticación.
Paso 4: añadir los archivos de traducción
Edite los archivos en src/locale/:
La primera vez que añada un archivo de idioma debe reiniciar la aplicación para que surta efecto.
Para más detalles sobre los archivos de traducción, el hook useT() y tExpr(), consulte Internacionalización (i18n).
Paso 5: endpoints del servidor
El formulario del cliente necesita dos endpoints en el backend: externalApi:get y externalApi:set. La parte de servidor no es complicada: definimos una tabla para guardar la configuración y registramos los dos endpoints.
Definir la tabla
Cree src/server/collections/externalApiSettings.ts. NocoBase carga automáticamente las definiciones de Collection en este directorio:
Registrar el resource y los endpoints
Edite src/server/plugin.ts y registre el resource con resourceManager.define(), configurando además los permisos ACL:
Puntos clave:
ctx.db.getRepository(): devuelve el objeto de operaciones de datos a partir del nombre de la Collection.ctx.action.params.values: cuerpo (body) de la petición POST.acl.allow():'loggedIn'indica que basta con estar autenticado. Como el endpointsetno se ha permitido explícitamente, por defecto solo los administradores pueden invocarlo.await next(): cada acción debe llamarlo al final; es la convención del middleware de Koa.
Paso 6: escribir la página "Acerca de"
En el paso 2 registramos dos pestañas; el componente de "API Configuration" se escribió en el paso 3, ahora toca la página de "About".
Cree src/client-v2/pages/AboutPage.tsx:
Esta página es muy sencilla: usa Descriptions de Antd para mostrar información del plugin. En proyectos reales la pestaña "About" puede contener versión, changelog, enlaces de ayuda, etc.
Paso 7: activar el plugin
Tras activarlo, refresque la página: en el menú "Configuración del plugin" aparecerá la entrada "External API Settings".

Código fuente completo
- @nocobase-example/plugin-settings-page: página de configuración del plugin completa.
Resumen
Capacidades utilizadas en este ejemplo:
Enlaces relacionados
- Crear el primer plugin: crear el esqueleto desde cero.
- Plugin: entrada del plugin y ciclo de vida.
- Router: rutas de páginas y registro de la página de configuración.
- Context → Capacidades comunes:
ctx.api,ctx.t, etc. - Desarrollo de Component: forma de escribir componentes React.
- Visión general del desarrollo en servidor: definición de endpoints en el backend.
- Internacionalización (i18n): archivos de traducción.
- Internacionalización (servidor): traducciones en el servidor.

