umbraco-entity-bulk-actions
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseUmbraco Entity Bulk Actions
Umbraco 实体批量操作
What is it?
什么是实体批量操作?
Entity Bulk Actions perform an action on a selection of multiple items at once. They appear in the collection selection toolbar when users select multiple items, enabling batch operations like bulk publishing, deleting, or custom processing across multiple entities simultaneously.
实体批量操作可同时对选中的多个项目执行操作。当用户选中多个项目时,它们会出现在集合选择工具栏中,支持批量发布、删除或对多个实体同时进行自定义处理等批量操作。
Documentation
文档
Always fetch the latest docs before implementing:
- Main docs: https://docs.umbraco.com/umbraco-cms/customizing/extending-overview/extension-types/entity-bulk-actions
- Collections: https://docs.umbraco.com/umbraco-cms/customizing/extending-overview/extension-types/collections
- Foundation: https://docs.umbraco.com/umbraco-cms/customizing/foundation
- Extension Registry: https://docs.umbraco.com/umbraco-cms/customizing/extending-overview/extension-registry
实施前请务必获取最新文档:
- 主文档:https://docs.umbraco.com/umbraco-cms/customizing/extending-overview/extension-types/entity-bulk-actions
- 集合:https://docs.umbraco.com/umbraco-cms/customizing/extending-overview/extension-types/collections
- 基础框架:https://docs.umbraco.com/umbraco-cms/customizing/foundation
- 扩展注册表:https://docs.umbraco.com/umbraco-cms/customizing/extending-overview/extension-registry
Related Foundation Skills
相关基础技能
-
Repository Pattern: When implementing bulk operations that need data access
- Reference skill:
umbraco-repository-pattern
- Reference skill:
-
Conditions: When controlling bulk action visibility based on collection or permissions
- Reference skill:
umbraco-conditions
- Reference skill:
-
仓储模式:当实现需要数据访问的批量操作时
- 参考技能:
umbraco-repository-pattern
- 参考技能:
-
条件判断:当需要根据集合或权限控制批量操作的可见性时
- 参考技能:
umbraco-conditions
- 参考技能:
Workflow
工作流程
- Fetch docs - Use WebFetch on the URLs above
- Ask questions - What collection? What bulk operation? What entity types?
- Generate files - Create manifest + bulk action class based on latest docs
- Explain - Show what was created and how to test
- 获取文档 - 使用WebFetch访问上述URL
- 明确问题 - 针对哪个集合?执行什么批量操作?针对哪些实体类型?
- 生成文件 - 根据最新文档创建清单(manifest)和批量操作类
- 说明解释 - 展示创建的内容以及测试方法
Minimal Examples
最简示例
Manifest (manifests.ts)
清单文件 (manifests.ts)
typescript
import type { ManifestEntityBulkAction } from '@umbraco-cms/backoffice/extension-registry';
import { MyBulkAction } from './my-bulk-action.js';
const manifest: ManifestEntityBulkAction = {
type: 'entityBulkAction',
alias: 'My.EntityBulkAction',
name: 'My Bulk Action',
weight: 10,
api: MyBulkAction,
meta: {
icon: 'icon-check',
label: 'Process Selected',
},
conditions: [
{
alias: 'Umb.Condition.CollectionAlias',
match: 'Umb.Collection.Document',
},
],
};
export const manifests = [manifest];typescript
import type { ManifestEntityBulkAction } from '@umbraco-cms/backoffice/extension-registry';
import { MyBulkAction } from './my-bulk-action.js';
const manifest: ManifestEntityBulkAction = {
type: 'entityBulkAction',
alias: 'My.EntityBulkAction',
name: 'My Bulk Action',
weight: 10,
api: MyBulkAction,
meta: {
icon: 'icon-check',
label: 'Process Selected',
},
conditions: [
{
alias: 'Umb.Condition.CollectionAlias',
match: 'Umb.Collection.Document',
},
],
};
export const manifests = [manifest];Bulk Action Implementation (my-bulk-action.ts)
批量操作实现 (my-bulk-action.ts)
typescript
import { UmbEntityBulkActionBase } from '@umbraco-cms/backoffice/entity-bulk-action';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
export class MyBulkAction extends UmbEntityBulkActionBase<never> {
constructor(host: UmbControllerHost, args: { selection: Array<string> }) {
super(host, args);
}
async execute() {
// this.selection contains array of unique identifiers
console.log('Processing items:', this.selection);
for (const unique of this.selection) {
// Process each selected item
console.log('Processing:', unique);
}
alert(`Processed ${this.selection.length} items`);
}
}typescript
import { UmbEntityBulkActionBase } from '@umbraco-cms/backoffice/entity-bulk-action';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
export class MyBulkAction extends UmbEntityBulkActionBase<never> {
constructor(host: UmbControllerHost, args: { selection: Array<string> }) {
super(host, args);
}
async execute() {
// this.selection contains array of unique identifiers
console.log('Processing items:', this.selection);
for (const unique of this.selection) {
// Process each selected item
console.log('Processing:', unique);
}
alert(`Processed ${this.selection.length} items`);
}
}Bulk Action with Repository
结合仓储的批量操作
typescript
import { UmbEntityBulkActionBase } from '@umbraco-cms/backoffice/entity-bulk-action';
export class MyBulkAction extends UmbEntityBulkActionBase<MyRepository> {
async execute() {
// Process all selected items via repository
for (const unique of this.selection) {
await this.repository?.processItem(unique);
}
}
}typescript
import { UmbEntityBulkActionBase } from '@umbraco-cms/backoffice/entity-bulk-action';
export class MyBulkAction extends UmbEntityBulkActionBase<MyRepository> {
async execute() {
// Process all selected items via repository
for (const unique of this.selection) {
await this.repository?.processItem(unique);
}
}
}Manifest with Multiple Conditions
多条件清单文件
typescript
const manifest: ManifestEntityBulkAction = {
type: 'entityBulkAction',
alias: 'My.MediaBulkAction',
name: 'Process Media',
api: MyBulkAction,
meta: {
icon: 'icon-picture',
label: 'Optimize Images',
},
conditions: [
{
alias: 'Umb.Condition.CollectionAlias',
match: 'Umb.Collection.Media',
},
],
};typescript
const manifest: ManifestEntityBulkAction = {
type: 'entityBulkAction',
alias: 'My.MediaBulkAction',
name: 'Process Media',
api: MyBulkAction,
meta: {
icon: 'icon-picture',
label: 'Optimize Images',
},
conditions: [
{
alias: 'Umb.Condition.CollectionAlias',
match: 'Umb.Collection.Media',
},
],
};Common Collection Aliases
常见集合别名
- - Content collection
Umb.Collection.Document - - Media collection
Umb.Collection.Media - - Member collection
Umb.Collection.Member
That's it! Always fetch fresh docs, keep examples minimal, generate complete working code.
- - 内容集合
Umb.Collection.Document - - 媒体集合
Umb.Collection.Media - - 会员集合
Umb.Collection.Member
就是这样!请始终获取最新文档,保持示例最简,生成可直接运行的完整代码。