PHPackages                             kachnitel/entity-components-bundle - 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. kachnitel/entity-components-bundle

ActiveSymfony-bundle[Utility &amp; Helpers](/categories/utility)

kachnitel/entity-components-bundle
==================================

Reusable Symfony Live Components for entity management (tags, attachments, comments, inline-edit fields)

0.0.3(1mo ago)04911MITPHPPHP &gt;=8.2CI failing

Since Feb 8Pushed 1mo agoCompare

[ Source](https://github.com/kachnitel/FrdEntityComponentsBundle)[ Packagist](https://packagist.org/packages/kachnitel/entity-components-bundle)[ RSS](/packages/kachnitel-entity-components-bundle/feed)WikiDiscussions master Synced today

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

Kachnitel Entity Components Bundle
==================================

[](#kachnitel-entity-components-bundle)

[![Tests](https://camo.githubusercontent.com/770feab10c8ecefab878c712bc98ff53dd294681d909143d53a584254b06f86c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f74657374732d3338362532307061737365642d726564)](https://camo.githubusercontent.com/770feab10c8ecefab878c712bc98ff53dd294681d909143d53a584254b06f86c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f74657374732d3338362532307061737365642d726564)[![Coverage](https://camo.githubusercontent.com/6558781c2e7c33c618704c76ff1ad381d86928dca35fb565463a7c1cb162dee9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f7665726167652d31392532352d726564)](https://camo.githubusercontent.com/6558781c2e7c33c618704c76ff1ad381d86928dca35fb565463a7c1cb162dee9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f7665726167652d31392532352d726564)[![Assertions](https://camo.githubusercontent.com/921e49d6152d27280a8adea01296bad70c85ad625ec7be0c594090437064d339/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f617373657274696f6e732d3637342d626c7565)](https://camo.githubusercontent.com/921e49d6152d27280a8adea01296bad70c85ad625ec7be0c594090437064d339/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f617373657274696f6e732d3637342d626c7565)[![PHPStan](https://camo.githubusercontent.com/21920d796a9d224b5a0d50071acbf8a949823bc2b3cad5be032ec5156bf605a9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048505374616e2d362d627269676874677265656e)](https://camo.githubusercontent.com/21920d796a9d224b5a0d50071acbf8a949823bc2b3cad5be032ec5156bf605a9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048505374616e2d362d627269676874677265656e)[![PHP](https://camo.githubusercontent.com/1bb3592bd684ca1c1b4f1fb2afa0a51c6910cf6068c262ca26299c7264ca775f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d2533453d382e322d3737374242343f6c6f676f3d706870266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/1bb3592bd684ca1c1b4f1fb2afa0a51c6910cf6068c262ca26299c7264ca775f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d2533453d382e322d3737374242343f6c6f676f3d706870266c6f676f436f6c6f723d7768697465)[![Symfony](https://camo.githubusercontent.com/bca237fded95b94d7947a4231da294710525ceea77da959f84987fa388eb7294/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53796d666f6e792d253545362e34253743253545372e30253743253545382e302d3030303030303f6c6f676f3d73796d666f6e79266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/bca237fded95b94d7947a4231da294710525ceea77da959f84987fa388eb7294/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53796d666f6e792d253545362e34253743253545372e30253743253545382e302d3030303030303f6c6f676f3d73796d666f6e79266c6f676f436f6c6f723d7768697465)

Reusable Symfony Live Components for entity management: tags, file attachments, comments, relationship dropdowns, and a full set of **inline-edit field components** that work with any Doctrine entity.

Quick Start
-----------

[](#quick-start)

### 1. Install

[](#1-install)

```
composer require kachnitel/entity-components-bundle
```

### 2. Map interfaces to your concrete classes

[](#2-map-interfaces-to-your-concrete-classes)

For each bundle feature you use, add one line to `config/packages/doctrine.yaml`:

```
# config/packages/doctrine.yaml
doctrine:
    orm:
        resolve_target_entities:
            # Add only the lines relevant to features you use:
            Kachnitel\EntityComponentsBundle\Interface\TagInterface: App\Entity\Tag
            Kachnitel\EntityComponentsBundle\Interface\AttachmentInterface: App\Entity\Attachment
```

### 3. Use the traits and drop in components

[](#3-use-the-traits-and-drop-in-components)

```
// Any entity that needs tags — no extra ORM mapping required
class Product implements TaggableInterface
{
    use TaggableTrait;
    public function __construct() { $this->initializeTags(); }
}
```

```
{{# Inline-edit a text field — any entity property with a setter #}}

{{# Tag management #}}

{{# File attachments #}}

{{# Comments #}}

{{# Relationship / enum dropdown #}}

```

---

What's Next?
------------

[](#whats-next)

**Inline-edit any field****Level 1:** Drop in a field component — click ✎ to edit, save, or cancel:

```

```

**Level 2:** Association fields with live search:

```

```

**Level 3:** Add Symfony Validator constraints to the entity — validation runs automatically before flushing:

```
#[Assert\NotBlank]
#[Assert\Length(max: 100)]
private ?string $name = null;
```

**Level 4:** Control who can edit by overriding `EditabilityResolverInterface`:

```
Kachnitel\EntityComponentsBundle\Components\Field\EditabilityResolverInterface:
    alias: App\Field\MyEditabilityResolver
```

**Details:** [Inline-Edit Guide](docs/INLINE_EDIT.md)

**Tag management****Level 1:** Implement `TagInterface` and `TaggableInterface`, drop in the component:

```

```

**Level 2:** Read-only badge display:

```

```

**Level 3:** Colored categories — return a hex color from `getCategoryColor()` on your Tag entity. Text color is flipped automatically for contrast.

**Details:** [Tags Guide](docs/TAGS.md)

**File attachments****Level 1:** Register a `FileHandlerInterface` service, implement `AttachableInterface`, drop in the component:

```

```

**Level 2:** Read-only display, custom collection property:

```
:config="{ readOnly: true, property: 'media' }"
```

**Level 3:** Per-attachment tagging:

```
:config="{ tagClass: 'App\\Entity\\Tag' }"
```

**Details:** [Attachments Guide](docs/ATTACHMENTS.md)

**Comments****Level 1:** Implement `CommentInterface` and `CommentableInterface`, drop in the component:

```

```

**Level 2:** Read-only display, custom collection property:

```
:config="{ readOnly: true, property: 'notes' }"
```

**Level 3:** Limit text length — add a `MAX_TEXT_LENGTH` constant to your Comment entity and the textarea `maxlength` is set automatically.

**Details:** [Comments Guide](docs/COMMENTS.md)

**Relationship / enum dropdown****Level 1:** Works out of the box for any entity relation or backed enum:

```

```

**Level 2:** Access control, placeholder, label:

```
:config="{
    role: 'ROLE_EDITOR',
    placeholder: '— Select Region —',
}"
```

**Level 3:** Filter records or use a custom repository method:

```
:config="{ filter: { active: true } }"
:config="{ repositoryMethod: 'findActive' }"
```

**Details:** [SelectRelationship Guide](docs/SELECT_RELATIONSHIP.md)

---

Components at a glance
----------------------

[](#components-at-a-glance)

ComponentTagDescription`TagManager``K:Entity:TagManager`Colored tag badges with category grouping`AttachmentManager``K:Entity:AttachmentManager`File upload and attachment list`CommentsManager``K:Entity:CommentsManager`Threaded comments with delete confirmation`SelectRelationship``K:Entity:SelectRelationship`Eager dropdown for small option sets and enums`StringField``K:Entity:Field:String`Inline text edit`IntField``K:Entity:Field:Int`Inline integer edit`FloatField``K:Entity:Field:Float`Inline decimal edit`BoolField``K:Entity:Field:Bool`Inline checkbox toggle`DateField``K:Entity:Field:Date`Inline date / datetime / time edit`EnumField``K:Entity:Field:Enum`Inline dropdown for PHP backed enums`RelationshipField``K:Entity:Field:Relationship`Live-search inline editor for ManyToOne / OneToOne`CollectionField``K:Entity:Field:Collection`Live-search inline editor for ManyToMany / OneToManyDocumentation
-------------

[](#documentation)

GuideDescription[Inline-Edit Fields](docs/INLINE_EDIT.md)All field types, validation, editability control, display override[Tags](docs/TAGS.md)TagManager setup, categories, colors[Attachments](docs/ATTACHMENTS.md)AttachmentManager setup, FileHandlerInterface, template blocks[Comments](docs/COMMENTS.md)CommentsManager setup, author attribution, text limits[SelectRelationship](docs/SELECT_RELATIONSHIP.md)Dropdown for relations and enums, access control, filteringRequirements
------------

[](#requirements)

- PHP 8.2+
- Symfony 6.4, 7.x, or 8.x
- Doctrine ORM
- Symfony UX Live Component

License
-------

[](#license)

MIT

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance91

Actively maintained with recent releases

Popularity16

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity39

Early-stage or recently created project

 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.

###  Release Activity

Cadence

Every ~52 days

Total

3

Last Release

42d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/4067705?v=4)[Ondrej Vana](/maintainers/kachnitel)[@kachnitel](https://github.com/kachnitel)

---

Top Contributors

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

---

Tags

symfony-uxtagsattachmentslive componentinline editentity-management

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/kachnitel-entity-components-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/kachnitel-entity-components-bundle/health.svg)](https://phpackages.com/packages/kachnitel-entity-components-bundle)
```

###  Alternatives

[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k17.9M388](/packages/easycorp-easyadmin-bundle)[rcsofttech/audit-trail-bundle

Enterprise-grade, high-performance Symfony audit trail bundle. Automatically track Doctrine entity changes with split-phase architecture, multiple transports (HTTP, Queue, Doctrine), and sensitive data masking.

1189.8k](/packages/rcsofttech-audit-trail-bundle)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.5k5.9M739](/packages/sylius-sylius)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.1k17.8k](/packages/prestashop-prestashop)[2lenet/crudit-bundle

The easy like Crud'it Bundle.

1616.4k14](/packages/2lenet-crudit-bundle)[pimcore/pimcore

Content &amp; Product Management Framework (CMS/PIM/E-Commerce)

3.8k3.8M508](/packages/pimcore-pimcore)

PHPackages © 2026

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