A datagrid object only takes care of converting datasource to the result set. All other operations are performed by extensions(e.g., pagination, filtering, etc.).

Here is a list of already implemented extensions:

  • Formatter - responsible for backend field formatting(e.g., generating URL using router, translation using Symfony translator, etc.). This extension also takes care about passing columns configuration to the view layer.
  • Pager - responsible for pagination
  • Sorter - responsible for sorting
  • Action - provides actions configurations for grid
  • Mass Action - provides mass actions configurations for grid
  • Toolbar - provides toolbar configuration for view
  • Grid Views - provides configuration for grid views toolbar
  • Export - responsible for export grid data
  • Field ACL - allow to protect entity fields with ACL
  • Board - responsible for adding Kanban board views for datagrids
  • Filter - responsible for adding filtering and filter widgets to grid


To implement your extension you have to do following:

  • Develop class that implements ExtensionVisitorInterface (also there is basic implementation in AbstractExtension class)
  • Register you extension as service with tag { name: oro_datagrid.extension }