Создание страницы настроек плагина
Многим плагинам нужна страница настроек, чтобы пользователь мог конфигурировать параметры — например, API-ключ стор оннего сервиса, адрес Webhook и т.д. Этот пример показывает, как с помощью pluginSettingsManager + React-компонентов + ctx.api создать полноценную страницу настроек плагина.
Этот пример не задействует FlowEngine, это чисто комбинация Plugin + Router + Component + Context.
Рекомендуется сначала ознакомиться со следующим — это упростит разработку:
- Написание первого плагина — создание плагина и структура каталогов
- Plugin (Плагин) — точка входа плагина и жизненный цикл
load() - Router (Маршрутизация) — регистрация страницы настроек через
pluginSettingsManager - Разработка Component-компонентов — написание React-компонентов и использование useFlowContext
- i18n Интернационализация — формат файлов перевода и использование
useT()
Конечный результат
Мы делаем страницу настроек «Внешний сервис»:
- Появляется в меню «Конфигурация плагинов»
- Использует Antd Form в качестве UI формы
- Через
ctx.apiвызывает бэкенд-интерфейсы для чтения и сохранения конфигурации - После успешного сохранения выводит уведомление

Полный исходный код см. в @nocobase-example/plugin-settings-page. Если хотите запустить и посмотреть локально:
Ниже шаг за шагом построим этот плагин с нуля.
Шаг 1: создать каркас плагина
Выполните в корне репозитория:
Это сгенерирует базовую файловую структуру в packages/plugins/@my-project/plugin-settings-page, включая каталоги src/client-v2/, src/server/, src/locale/ и т.д. Подробное описание см. в Написание первого плагина.
Затем запустите режим разработки, чтобы изменения кода подхватывались горячей перезагрузкой: для проекта, созданного командой nb init, выполните nb source dev в корне проекта (<app-path>); для самостоятельно склонированного репозитория с исходным кодом NocoBase выполните yarn dev в корне исходников.
Шаг 2: зарегистрировать страницу настроек
Отредактируйте src/client-v2/plugin.tsx, в load() через this.pluginSettingsManager зарегистрируйте страницу настроек. В два этапа: сначала через addMenuItem() зарегистрируйте пункт меню, затем через addPageTabItem() зарегистрируйте сами страницы:
После регистрации в меню «Конфигурация плагинов» появится пункт «Внешний сервис», вверху будут две вкладки — «API Configuration» и «About». Когда в меню только одна страница, панель вкладок автоматически скрывается; здесь зарегистрированы две страницы, поэтому она будет автоматически отображаться. this.t() автоматически исп ользует имя пакета текущего плагина в качестве namespace i18n. Подробнее см. в Context → Распространённые возможности.

Шаг 3: написать компонент страницы настроек
Создайте src/client-v2/pages/ExternalApiSettingsPage.tsx. Страница настроек — это обычный React-компонент. Здесь используем Form и Card из Antd для построения UI, через useFlowContext() получаем ctx.api для взаимодействия с бэкендом, через useT() — функцию перевода.
Несколько ключевых моментов:
useFlowContext()— импортируется из@nocobase/flow-engine, даёт доступ кctx.apiи другим возможностям контекстаuseT()— хук перевода, импортируемый изlocale.ts, уже привязан к namespace плагина. Подробнее см. i18n ИнтернационализацияuseRequest()— из ahooks, обрабатывает состояния loading, error для запросов.manual: trueозначает, что запрос не выполняется автоматически — нужно вручную вызватьrun()ctx.api.request()— использовани е совпадает с Axios, NocoBase автоматически добавляет аутентификационную информацию
Шаг 4: добавить файлы локализации
Отредактируйте файлы перевода в src/locale/ плагина:
При первом добавлении файла языка нужно перезапустить приложение, чтобы он вступил в силу.
О формате файлов перевода, хуке useT(), tExpr() и других способах использования подробнее см. в i18n Интернационализация.
Шаг 5: серверные интерфейсы
Форме на клиенте нужны два бэкенд-интерфейса: externalApi:get и externalApi:set. Серверная часть несложная — определяется таблица для хранения конфигурации, регистрируются два интерфейса.

