DatatablesBundle icon indicating copy to clipboard operation
DatatablesBundle copied to clipboard

Column as a service?

Open stephanvierkant opened this issue 5 years ago • 2 comments

I'd like to inject services (Symfony Routing Component for example) in a Column using Dependency Injection, like you can do with a FormType in Symfony.

I've no idea how to implement this in this library. Any ideas?

stephanvierkant avatar Jul 03 '19 09:07 stephanvierkant

I am thinking about it since a long time and this should be very useful indeed.

To implement this, I think the first step will be to add a custom tag associated to the ColumnInterface. So we will be able to easily identify all Column classes and then load them as services. This can be done using with tag auto configuration: https://symfony.com/doc/current/service_container/tags.html#autoconfiguring-tags

Then, we will be able to pass all ColumnInterface services as an argument to the ColumnBuilder, for example using the !tagged keyword: https://symfony.com/doc/3.4/service_container/tags.html#reference-tagged-services This means all Column classes will be passed to the ColumnBuilder as services (with automatic dependency injection) and we should be able to use them as normal service class.

Seb33300 avatar Jul 03 '19 10:07 Seb33300

I'm working on a Proof of Concept!

stephanvierkant avatar Jul 03 '19 13:07 stephanvierkant