Создание пользовательской кнопки действия
В NocoBase действие (Action) — это кнопка в блоке, используемая для запуска бизнес-логики (например, «Создать», «Редактировать», «Удалить» и т.д.). Этот пример показывает, как с помощью ActionModel сделать пользовательскую кнопку действия и через ActionSceneEnum контролировать сценарий появления кнопки.
Рекомендуется сначала ознакомиться со следующим — это упростит разработку:
- Написание первого плагина — создание плагина и структура каталогов
- Plugin (Плагин) — точка входа плагина и жизненный цикл
load() - FlowEngine → Расширение действий — введение в ActionModel, ActionSceneEnum
- i18n Интернационализация — формат файлов перевода и использование
tExpr()для отложенного перевода
Конечный результат
Мы делаем три пользовательские кнопки действий, по одной для каждого из трёх сценариев действия:
- Действие уровня таблицы данных (
collection) — появляется в панели действий вверху блока, рядом с кнопкой «Создать» - Действие уровня записи (
record) — появляется в столбце действий каждой строки таблицы, рядом с «Редактировать», «Удалить» - Подходит для обоих (
both) — появляется в обоих сценариях
Полный исходный код см. в @nocobase-example/plugin-simple-action. Если хотите запустить и посмотреть локально:
Ниже шаг за шагом построим этот плагин с нуля.
Шаг 1: создать каркас плагина
Выполните в корне репозитория:
Подробное описание см. в Написание первого плагина.
Шаг 2: создать модели действий
Каждое действие должно объя вить сценарий своего появления через статическое свойство static scene:
Действие уровня таблицы данных
Создайте src/client-v2/models/SimpleCollectionActionModel.tsx:
Действие уровня записи
Создайте src/client-v2/models/SimpleRecordActionModel.tsx:
Подходит для обоих сценариев
Создайте src/client-v2/models/SimpleBothActionModel.tsx:
Структура трёх вариантов одинакова — различие только в значении static scene и тексте кнопки. Каждая кнопка через registerFlow({ on: 'click' }) слушает событие клика, через ctx.message показывает уведомление, чтобы пользователь видел, что кнопка действительно сработала.
Шаг 3: добавить файлы локализации
Отредакти руйте файлы перевода в src/locale/ плагина:
При первом добавлении файла языка нужно перезапустить приложение, чтобы он вступил в силу.
О формате файлов перевода и других способах использования tExpr() подробнее см. в i18n Интернационализация.
Шаг 4: зарегистрировать в плагине
Отредактируйте src/client-v2/plugin.tsx, зарегистрируйте через registerModelLoaders для ленивой загрузки:
Шаг 5: включить плагин
После включения в «Настройка действий» блока таблицы можно будет добавить эти пользовательские кнопки действий.
Полный исходный код
- @nocobase-example/plugin-simple-action — полный пример с тремя сценариями действий
Резюме
Возможности, использованные в этом примере:
Связанные ссылки
- Написание первого плагина — создание каркаса плагина с нуля
- Обзор FlowEngine — базовое использование FlowModel
- FlowEngine → Расширение действий — ActionModel, ActionSceneEnum
- FlowEngine → Расширение блоков — пользовательские блоки
- FlowEngine → Расширение полей — пользовательские компоненты полей
- Component vs FlowModel — когда использовать FlowModel
- Plugin (Плагин) — точка входа плагина и жизненный цикл load()
- i18n Интернационализация — формат файлов перевода и использование tExpr
- Полная документация FlowEngine — полный справочник FlowModel, Flow, Context

