PHPackages                             burnbright/silverstripe-componenteditor - 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. burnbright/silverstripe-componenteditor

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

burnbright/silverstripe-componenteditor
=======================================

Front-end component (DataObject) create/edit/delete control.

3291[1 PRs](https://github.com/burnbright/silverstripe-componenteditor/pulls)PHP

Since Feb 21Pushed 10y ago1 watchersCompare

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

READMEChangelogDependenciesVersions (1)Used By (0)

SilverStripe Component Editor
=============================

[](#silverstripe-component-editor)

A light-weight control for editing a single object, using it's `getFrontEndFields`. Useful for one-to-one (has\_one, belongs\_to) relationships.

A new object will be created on first save. Subsequently the form will be populated with the object data, and saved back to that object.

Usage
-----

[](#usage)

Update your DataObject as follows:

- Implement/extend the `getFrontEndFields` method to control form fields.
- Implement/extend the `canCreate`, `canEdit`, and `canDelete` functions to control access. [see docs](http://doc.silverstripe.org/framework/en/reference/modeladmin#permissions).

Add the `EditComponentForm` inside your controller class:

```

```

Troubleshooting / future work
-----------------------------

[](#troubleshooting--future-work)

Make sure you implement the `canCreate` and `canEdit` and `canDelete` functions on your dataobject.

Currently works best if your object (eg Testimonial) contains the has\_one relationship, if you are wanting to join to the parent (eg Member). This is because the EditComponentForm only saves the object you are working on, rather than the parent. Swap your has\_one, with your belongs\_to to resolve saving issues. Alternatively, save and link the new object before passing to the form (could end up creating a lot of empty objects). There is potential for this module to be upgraded to handle has\_one relationships, perhaps by introducing a callback, or requiring that parent object be passed in.

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1356335?v=4)[Jeremy Shipman](/maintainers/jedateach)[@jedateach](https://github.com/jedateach)

---

Top Contributors

[![jedateach](https://avatars.githubusercontent.com/u/1356335?v=4)](https://github.com/jedateach "jedateach (4 commits)")

### Embed Badge

![Health badge](/badges/burnbright-silverstripe-componenteditor/health.svg)

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

PHPackages © 2026

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