PHPackages                             silverstripe/cms-events - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. silverstripe/cms-events

ActiveSilverstripe-vendormodule[Utility &amp; Helpers](/categories/utility)

silverstripe/cms-events
=======================

Triggers events for common actions in Silverstripe CMS

2.x-dev(2y ago)320.7k↓12.5%4[2 issues](https://github.com/silverstripe/silverstripe-cms-events/issues)[1 PRs](https://github.com/silverstripe/silverstripe-cms-events/pulls)1BSD-3-ClausePHPCI passing

Since Mar 11Pushed 9mo ago8 watchersCompare

[ Source](https://github.com/silverstripe/silverstripe-cms-events)[ Packagist](https://packagist.org/packages/silverstripe/cms-events)[ RSS](/packages/silverstripe-cms-events/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (3)Versions (4)Used By (1)

Events for Silverstripe CMS
===========================

[](#events-for-silverstripe-cms)

This module allows developers to register event handlers for common CMS actions using the [`silverstripe/event-dispatcher`](https://github.com/silverstripe/silverstripe-event-dispatcher) API.

Available events
----------------

[](#available-events)

#### formSubmitted

[](#formsubmitted)

- **Description**: Any form submitted in the CMS
- **Example**: save, publish, unpublish, delete
- **Listener**: `SilverStripe\CMSEvents\Listener\Form\FormListenerExtension`

#### cmsAction

[](#cmsaction)

- **Description**: A `CMSMain` controller action
- **Example**: `savetreenode` (reorder site tree)
- **Listener**: `SilverStripe\CMSEvents\Listener\CMSMain\CmsMainListenerExtension`

#### gridFieldAction

[](#gridfieldaction)

- **Description**: A standard GridField action invoked via a URL (`GridField_URLHandler`)
- **Example**: `handleReorder` (reorder items)
- **Listener**: `SilverStripe\CMSEvents\Listener\GridField\Action\GridFieldActionListenerExtension`

#### gridFieldAlteration

[](#gridfieldalteration)

- **Description**: A GridField action invoked via a URL (`GridField_ActionProvider`)
- **Example**: `deleterecord`, `archiverecord`
- **Listener**: `SilverStripe\CMSEvents\Listener\GridField\Alteration\GridFieldAlterationListenerExtension`

Registering an event handler
----------------------------

[](#registering-an-event-handler)

```
SilverStripe\Core\Injector\Injector:
  SilverStripe\EventDispatcher\Dispatch\Dispatcher:
    properties:
      handlers:
        # arbitrary key
        cmsForms:
          on: [ formSubmitted.save ]
          handler: %$MyProject\MySaveHandler
```

For more information on using the event dispatcher, read the [event dispatcher documentation](https://github.com/silverstripe/silverstripe-event-dispatcher)

Requirements
------------

[](#requirements)

- silverstripe/framework: ^6

Installation
------------

[](#installation)

`$ composer require silverstripe/cms-events`

License
-------

[](#license)

See [License](license.md)

Bugtracker
----------

[](#bugtracker)

Bugs are tracked in the issues section of this repository. Before submitting an issue please read over existing issues to ensure yours is unique.

If the issue does look like a new bug:

- Create a new issue
- Describe the steps required to reproduce your issue, and the expected outcome. Unit tests, screenshots and screencasts can help here.
- Describe your environment as detailed as possible: SilverStripe version, Browser, PHP version, Operating System, any installed SilverStripe modules.

Please report security issues to the module maintainers directly. Please don't file security issues in the bugtracker.

Development and contribution
----------------------------

[](#development-and-contribution)

If you would like to make contributions to the module please ensure you raise a pull request and discuss with the module maintainers.

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance27

Infrequent updates — may be unmaintained

Popularity32

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 60% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1064 days

Total

2

Last Release

830d ago

Major Versions

1.x-dev → 2.x-dev2024-02-09

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/654636?v=4)[Aaron Carlino](/maintainers/unclecheese)[@unclecheese](https://github.com/unclecheese)

![](https://www.gravatar.com/avatar/b0cba8b534e20e6ab4fff555a97b237a18436ebca1446fc0b29c8a8b504038b9?d=identicon)[GuySartorelli](/maintainers/GuySartorelli)

---

Top Contributors

[![mfendeksilverstripe](https://avatars.githubusercontent.com/u/26395487?v=4)](https://github.com/mfendeksilverstripe "mfendeksilverstripe (6 commits)")[![chillu](https://avatars.githubusercontent.com/u/111025?v=4)](https://github.com/chillu "chillu (3 commits)")[![robbieaverill](https://avatars.githubusercontent.com/u/5170590?v=4)](https://github.com/robbieaverill "robbieaverill (1 commits)")

---

Tags

eventssilverstripecms

### Embed Badge

![Health badge](/badges/silverstripe-cms-events/health.svg)

```
[![Health](https://phpackages.com/badges/silverstripe-cms-events/health.svg)](https://phpackages.com/packages/silverstripe-cms-events)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
