mcpField
U
umbraco-entity-create-option-action

umbraco-entity-create-option-action

github.com/umbraco开发27392 次安装6 周前更新
代码仓库

关于 umbraco-entity-create-option-action

用于实现 Umbraco 后台实体创建选项操作的技能。它指导开发者查阅最新文档,并生成清单和操作类,以支持执行逻辑、打开模态框或导航的创建选项。

主要功能

  1. 01创建选项操作清单
  2. 02操作类代码框架
  3. 03基于模态框的选项
  4. 04基于导航的选项
  5. 05查阅最新文档的指引

适用场景

  1. 01为实体添加其他创建路径
  2. 02从创建选项打开模态框
  3. 03导航到自定义创建视图

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/umbraco/umbraco-cms-backoffice-skills --skill umbraco-entity-create-option-action

安装后在 Claude Code 中输入/umbraco-entity-create-option-action确认已加载。

详细介绍

Umbraco 实体创建选项操作

这是什么?

实体创建选项操作会在创建实体时添加可自定义的选项。选择“创建”实体操作时,这些选项会显示在创建选项对话框中,用户可以在不同的创建方式或路径之间进行选择。这种机制支持扩展,其他开发者可以为现有工作流添加自己的创建选项。

文档

实施前,请务必获取最新文档:

相关基础技能

  • 模态框:创建选项会打开模态对话框时

    • 参考技能:umbraco-modals
  • 路由:创建选项会导航到其他视图时

    • 参考技能:umbraco-routing

工作流

  1. 获取文档 - 对上述 URL 使用 WebFetch
  2. 提问 - 实体类型是什么?需要哪些创建选项?选择选项后会发生什么?
  3. 生成文件 - 根据最新文档创建清单和操作类
  4. 说明 - 展示已创建的内容以及测试方法

最小示例

清单(manifests.ts)
import type { ManifestEntityCreateOptionAction } from '@umbraco-cms/backoffice/extension-registry';

const manifest: ManifestEntityCreateOptionAction = {
  type: 'entityCreateOptionAction',
  alias: 'My.EntityCreateOptionAction',
  name: 'My Create Option',
  weight: 100,
  api: () => import('./my-create-option-action.js'),
  forEntityTypes: ['user'],
  meta: {
    icon: 'icon-add',
    label: 'Create with Template',
    additionalOptions: false,
  },
};

export const manifests = [manifest];
操作实现(my-create-option-action.ts)
import { UmbEntityCreateOptionActionBase } from '@umbraco-cms/backoffice/entity-create-option-action';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';

export class MyCreateOptionAction extends UmbEntityCreateOptionActionBase {
  constructor(host: UmbControllerHost, args: { unique: string | null; entityType: string }) {
    super(host, args);
  }

  override async execute() {
    // Perform custom creation logic
    console.log('Creating with custom option for entity type:', this.entityType);

    // Could open a modal, navigate somewhere, or perform API calls
    alert('Custom create option executed!');
  }
}

export default MyCreateOptionAction;
带模态框的创建选项
import { UmbEntityCreateOptionActionBase } from '@umbraco-cms/backoffice/entity-create-option-action';
import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal';

export class MyCreateOptionAction extends UmbEntityCreateOptionActionBase {
  override async execute() {
    const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT);

    const modal = modalManager.open(this, MY_CREATE_MODAL, {
      data: {
        entityType: this.entityType,
        parentUnique: this.unique,
      },
    });

    await modal.onSubmit();
  }
}
带导航的创建选项
import { UmbEntityCreateOptionActionBase } from '@umbraco-cms/backoffice/entity-create-option-action';

export class MyCreateOptionAction extends UmbEntityCreateOptionActionBase {
  override async getHref() {
    // Return a URL to navigate to instead of execute()
    return `/section/my-section/workspace/my-workspace/create/${this.unique}`;
  }

  override async execute() {
    // Not called when getHref() returns a value
  }
}

元属性

  • icon - 要为选项显示的图标
  • label - 选项的显示标签
  • additionalOptions - 如果为 true,则作为次要/附加选项显示

就是这样!务必获取最新文档,保持示例简洁,并生成完整可运行的代码。

评论

支持 Markdown