カスタム操作ボタンを作る
NocoBase では、操作(Action)はブロック内のボタンで、ビジネスロジックをトリガーします。例えば「新規作成」「編集」「削除」などです。この例では ActionModel を使ってカスタム操作ボタンを作り、ActionSceneEnum でボタンの表示シーンを制御する方法を示します。
以下の内容を事前に理解しておくと、開発がスムーズになります:
- はじめてのプラグインを書く — プラグインの作成とディレクトリ構成
- Plugin プラグイン — プラグインエントリと
load()ライフサイクル - FlowEngine → 操作拡張 — ActionModel、ActionSceneEnum の基本紹介
- i18n 国際化 — 翻訳ファイルの書き方と
tExpr()遅延翻訳の使い方
最終的な効果
3つのカスタム操作ボタンを作ります。それぞれ3つの操作シーンに対応します:
- データテーブルレベル操作(
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 を新規作成:
3つの書き方の構造は同じです。違いは 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 — 3つの操作シーンの完全な例
まとめ
この例で使用した機能:
関連リンク
- はじめてのプラグインを書く — ゼロからプラグインスケルトンを作成
- FlowEngine 概要 — FlowModel の基本的な使い方
- FlowEngine → 操作拡張 — ActionModel、ActionSceneEnum
- FlowEngine → ブロック拡張 — カスタムブロック
- FlowEngine → フィールド拡張 — カスタムフィールドコンポーネント
- Component vs FlowModel — いつ FlowModel を使うか
- Plugin プラグイン — プラグインエントリと load() ライフサイクル
- i18n 国際化 — 翻訳ファイルの書き方と tExpr の使い方
- FlowEngine 完全ドキュメント — FlowModel、Flow、Context の完全リファレンス

