Crear un botón de acción personalizado
En NocoBase, una acción (Action) es un botón dentro de un bloque que dispara la lógica de negocio: por ejemplo "Nuevo", "Editar" o "Eliminar". Este ejemplo muestra cómo crear botones de acción personalizados con ActionModel y cómo controlar dónde aparecen mediante ActionSceneEnum.
Se recomienda revisar antes los siguientes contenidos para que el desarrollo resulte más fluido:
- Crear el primer plugin: creación de un plugin y estructura de directorios.
- Plugin: entrada del plugin y ciclo de vida de
load(). - FlowEngine → Extensión de acciones: introducción a ActionModel y ActionSceneEnum.
- Internacionalización (i18n): archivos de traducción y uso de
tExpr().
Resultado final
Crearemos tres botones de acción personalizados, uno por escenario:
- Acción a nivel de tabla (
collection): aparece en la barra de acciones superior del bloque, junto al botón "Nuevo". - Acción a nivel de registro (
record): aparece en la columna de acciones de cada fila, junto a "Editar" y "Eliminar". - Aplicable a ambos (
both): aparece en los dos escenarios.
Código fuente completo en @nocobase-example/plugin-simple-action. Para ejecutarlo en local:
A continuación se construye el plugin paso a paso desde cero.
Paso 1: crear el esqueleto del plugin
Desde la raíz del repositorio:
Para más detalles, consulte Crear el primer plugin.
Paso 2: crear los modelos de acción
Cada acción debe declarar su escenario mediante la propiedad static scene:
Acción a nivel de tabla
Cree src/client-v2/models/SimpleCollectionActionModel.tsx:
Acción a nivel de registro
Cree src/client-v2/models/SimpleRecordActionModel.tsx:
Acción aplicable a ambos escenarios
Cree src/client-v2/models/SimpleBothActionModel.tsx:
Las tres variantes tienen la misma estructura; solo cambian el valor de static scene y el texto del botón. Cada botón escucha el evento de clic mediante registerFlow({ on: 'click' }) y muestra un mensaje con ctx.message para que el usuario perciba que se ha activado.
Paso 3: 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 y tExpr(), consulte Internacionalización (i18n).
Paso 4: registrar en el plugin
Edite src/client-v2/plugin.tsx y registre con registerModelLoaders para carga bajo demanda:
Paso 5: activar el plugin
Una vez activado, podrá añadir estos botones desde "Configurar acciones" en el bloque de tabla.
Código fuente completo
- @nocobase-example/plugin-simple-action: ejemplo completo de los tres escenarios de acción.
Resumen
Capacidades utilizadas en este ejemplo:
Enlaces relacionados
- Crear el primer plugin: crear el esqueleto desde cero.
- Visión general de FlowEngine: uso básico de FlowModel.
- FlowEngine → Extensión de acciones: ActionModel y ActionSceneEnum.
- FlowEngine → Extensión de bloques: bloques personalizados.
- FlowEngine → Extensión de campos: campos personalizados.
- Component vs FlowModel: cuándo usar FlowModel.
- Plugin: entrada del plugin y ciclo de vida.
- Internacionalización (i18n): archivos de traducción y uso de
tExpr. - Documentación completa de FlowEngine: referencia completa.

