Datagrids
The datagrid configuration happens in the datagrids.yml file in the configuration directory of your bundle. It is a large file that is a map of datagrid names mapped to options that configure their behavior:
actions
type: map
This is a map of actions that can be performed from the datagrid. The keys are used to give unique identifiers inside the grid, but do not have a special meaning. For each action, a map must be passed configuring the action using the following options:
disabled
type: boolean
default: false
Enables you to manage action accessibility.
icon
type: string
The name of the Font Awesome icon that represents the action.
label
type: string
The action label that is displayed when the user hovers the icon. This will automatically be translated.
link
type: string
The name of a link to associate with this action which is configured in the properties
section.
rowAction
type: boolean
default: false
When set to true
, the user can click anywhere on the row to perform this action.
type
type: string
This can either be navigate
, delete
or ajax
. When the value is delete
, an HTTP DELETE
request will be performed to the configured URL, otherwise the resource will be requested
with a GET request in the background and the response will be displayed.
type is a required option for the action configuration. You can control action access by adding the acl_resource
node to each action (this parameter is optional).
Ajax
Ajax performs an ajax call by the given URL.
action_name:
type: ajax
link: PROPERTY_WITH_URL # required
Delete
Delete performs the DELETE ajax request by the given URL.
action_name:
type: delete
link: PROPERTY_WITH_URL # required
confirmation: true|false # should confirmation window be shown
actions:
delete:
type: delete
label: oro.grid.action.delete
link: delete_link
icon: trash-o
acl_resource: oro_user_user_delete
Navigate
Navigate performs redirects by the given URL.
action_name:
type: navigate
link: PROPERTY_WITH_URL # required
action_configuration
type: sequence
By default, all configured actions will be displayed for all entries of the data grid. If you need to hide or show some options depending on the data of the entry, you can create a service that decides whether or not an action is visible for an entry:
datagrids:
grid-name:
# ...
action_configuration: ['@acme_demo.datagrid_action_config', getActionPermissions]
The configured service method receives an instance of the
Oro\Bundle\DataGridBundle\Datasource\ResultRecordInterface
to access the value of the
current datagrid row and must return an array in which each key refers to an action and the boolean
value indicates whether or not the action will be shown.
You can disable the default operation for datagrid. Disable the operation by updating your datagrid configuration in its action_configuration section. Define a key corresponding to the operation name with the false value.
datagrids:
grid-name:
#... datagrid config sections
action_configuration:
some_default_common_operation: false
some_default_common_operation is not displayed at your_datagrid_name grid anymore. However, action_configuration can accept callable as a value, so sometimes the options are occupied by service callback. If it is so, we can use a different approach. See for more information Operations (Actions).
columns
type: map
Each key of the map corresponds to a property of a select entry that should be displayed in the grid. For each column you have to pass a map of options to configure how the column is shown:
choices
type: map
When using the select
type, this options provides a mapping of stored values to their
human-readable representation.
When the type
option is set to translatable
, this is treated as an expression that will
be evaluated to gain the value’s translated representation.
Example:
datagrids:
{grid-uid}:
# <grid configuration> goes here
columns:
{column-name}:
...
choices: # can be used service as data provider @service->getDataMethod
{key}: {value}
See for more information Inline Editing and Advanced Grid Configuration.
disabled
type: boolean
default: false
Enables you to remove the column from the grid.
frontend_type
type: string
The widget type that renders the value. Available types that are shipped with OroPlatform by
default are currency
, date
, datetime
, html
, integer
, select
and string
.
datagrids:
{grid-uid}:
# <grid configuration> goes here
columns:
{column-name}:
frontend_type: select
See for more information Inline Editing
label
type: string
The column headline which is a string that will be passed to the translator before being displayed.
order
type: int
The number that indicates the position of the column; it allows to change the order of the columns. By default it is not defined and columns are rendered in the order in which they are declared in the configuration.
template
type: string
This option is only available when the frontend_type
is html
and the value of the
type
option is twig
. Its value is a template reference.
inline_editing
columns:
column_name:
label: acme.customer.product_visibility.label
frontend_type: select
inline_editing:
enable: true # this cell will be editable
datagrids:
{grid-uid}:
# <grid configuration> goes here
columns:
{column-name}:
inline_editing:
enable: true
save_api_accessor:
# see main save_api_accessor, additonally supports field_name option
# which allows to override field name that sent to server
# {<field_name>: <new_value>}
editor:
component: my-bundle/js/app/components/cell-editor-component
component_options:
{key}: {value}
view: my-bundle/js/app/views/my-cell-editor-view
view_options:
{key}: {value}
autocomplete_api_accessor:
# configure autocomplete api accessor
# for example
# class: oroui/js/tools/search-api-accessor
enable
Marks or unmarks this column as editable. The behavior depends on main inline_editing.behavior: enable_all
- false will disable editing this cell. enable_selected
- true will enable editing this cell.
save_api_accessor
Allows to override default api accessor for the whole grid. Please see documentation for oroui/js/tools/api-accessor for details
editor
component
Allows to override component used to display view and specified in datagrid.{grid-uid}.inline_editing.cell_editor.component
component_options
Specifies options to pass into the cell editor component
view
Defines view used to render cell-editor. By default, this view is selected using datagrid.{grid-uid}.inline_editing.default_editors
file.
view_options
Specifies options to pass into the cell editor view”
autocomplete_api_accessor
Allow use autocomplete to fill select2 edit form.
See for more information Editable Datagrid Cells and Inline Editing.
editable
type: boolean
default: false
Column editable on the frontend.
datagrids:
{grid-uid}:
# <grid configuration> goes here
columns:
{column-name}:
editable: true # put cell in editable mod
See Advanced Grid Configuration for more information.
data_name
type: string
Data identifier (column name suggested by default).
renderable
type: boolean
default: true
Whether the column should be rendered.
required
type: boolean
default: false
If it is true, the column cannot be hidden over Datagrid Settings.
manageable
type: boolean
default: true
If it is false, the column does not appear in Datagrid Settings.
shortenableLabel
type: boolean
default: true
Could column label be abbreviated or shortened with an ellipsis.
type
type: string
When the frontend_type
is string
, this option can be set to translatable
to provide translated values.
When it is set to twig
, the Twig template referenced to with the template
option will be rendered.
Field
column_name:
type: field # default value `field`, so this key could be skipped here
frontend_type: date|datetime|decimal|integer|percent|currency|select|text|html|boolean # optional default string
data_name: someAlias.someField # optional, key in result that should represent this field
divisor: some number # optional if you need to divide a numeric value by a number before rendering it
Represents the default data field.
URL
column_name:
type: url
route: some_route # required
isAbsolute: true|false # optional
params: [] # optional params for route generating, will be took from record
anchor: string #optional, use it when need to add some #anchor to generated url
Represents URL field, mostly used for generating urls for actions.
Link
column_name:
type: link
route: some_route # required
isAbsolute: true|false # optional
params: [] # optional params for route generating, will be taken from record
anchor: string #optional, use it when need to add some #anchor to generated url
frontend_type: html #needed to display prepared link (a-tag) as html
Represents a link field to display a link as html. Link text is value of records column_name
, values for url generation are specified via params
.
Twig
column_name:
type: twig
template: string # required, template name
context: [] # optional, should not contain reserved keys(record, value)
Represents twig template formatted field.
Translatable
column_name:
type: translatable
data_name: string #optional if need to take value from another column
domain: string #optional
locale: string #optional
Used when the field should be translated by Symfony translator.
Callback
column_name:
type: callback
callable: "@link" # required
Localized Number
column_name:
type: localized_number
method: formatCurrency # required
context: [] # optional
context_resolver: "@callable" # optional
divisor: some number # optional if you need to divide a numeric value by a number before rendering it
Used to format numbers using Oro\Bundle\LocaleBundle\Formatter\NumberFormatter
on the backend.
method - method from NumberFormatter that should be used for formatting
context - static arguments for the method that will be called, starts from 2nd arg
context_resolver - callback that will resolve dynamic arguments for method that will be called, starts from 2nd arg should be compatible with following declaration:
function (ResultRecordInterface $record, $value, NumberFormatter $formatter) {}
Example:
We would like to format currency, but the currency code should be retrieved from the current row.
column_name:
type: localized_number
method: formatCurrency
context_resolver: staticClass::staticFunc
For a detailed explanation, see the section on formatters.
extends
type: string
You can reuse existing datagrid configurations by passing their name here.
filters
type: map
This option is used to configure how the datagrid can be filtered. Two options are available that define for which columns filter are available, how they look like, and which filter will be applied by default.
columns
type: map
For each column that can be filtered (the key of the map) a map of options can be given that specifies how the actual filter looks like. The available options are:
case_insensitive
type: bool
default: true
[Postgres only] When set to false, string filter searching becomes case sensitive.
data_name
type: string
The name of the column from the data source whose values will be filtered.
disabled
type: boolean
default: false
Enables you to remove the filter from the grid.
filter_by_having
type: bool
default: false
When set to true
, the expression created by the configured filter will be used inside the
having part of the query (this is needed, for example, when the configured data_name
is
the result of an aggregation function).
force_like
type: bool
default: false
When set to true, text-based search applies the LIKE %value%
or NOT LIKE %value%
statement to the search string by default. It depends on a chosen operator.
label
type: string
By default, the label for the filter will be the same as the one configured in the columns section. However, you can use this option if you want to show a label that is different from the column headline or if you want to filter the grid by an attribute that is not shown in the grid.
min_length
type: integer
default: 0
Specify the minimum length of the search string. When the search string length is below the limit, Oro application shows a validation message to the user and ignores the filter value.
order
type: int
The number that indicates the position of the filter; it allows to change the order of the filter. By default, it is not defined and filters are rendered in the order in which they are declared in the configuration or for columns.
type
type: string
The type of the filter to be used in the UI.
value_conversion
type: string|array
[ORM only] When string filter searching is case sensitive you can use this value to set callback which will be used to convert parameters.
default
type: map
By default, all data will be shown in the grid. You can use the default
option to define
default filters for each column. The column names are mapped to another map that contains the
configuration for the default value.
Tip
When filtering datetime columns, you can use some special placeholders that are defined in the
Oro\Bundle\FilterBundle\Provider\DateModifierInterface
(the constants prefixed
with VAR_
) to work with dynamic default values.
options
type: map
The description of options that you can pass in the datagrid configuration is available below.
To set datagrid options, define them under the datagrid_name.options path.
datagrids:
grid-name:
options:
entity_pagination:
type: boolean
default: true
Enables pagination UI for a collection of entities when these entities are part of a data set of a datagrid. Please take a look at OroEntityPaginationBundle for more information.
export
type: boolean
default: false
When enabled, the user can export the datagrid in CSV format.
When set to true, grid export button will be shown.
datagrids:
grid-name:
...
options:
export: true
More information of export configuration is available in the Export Extension topic.
frontend
type: boolean
default: false
Set the flag to ‘true’ to display the datagrid on the frontend. If set to ‘false’, the datagrid will be hidden.
requestMethod
type: string
default: GET
Set the request method which will be used to load data via ajax.
mass_actions
Detailed information on the mass action extension is available in the mass action extension topic.
toolbarOptions
Provides pagination and is responsible for passing the “pager” settings to the view layer. Only paging for ORM datasource is currently implemented. It is always enabled for ORM datasource. Detailed information on toolbars is available in the toolbarExtension and pagerExtension topics.
onePage
type: boolean
default: false
Using this option allows rendering all grid content on one page (up to 1000 rows).
grid-name:
options:
toolbarOptions:
pagination:
onePage: true
...
addDatagridSettingsManager
type: boolean
default: true
There is the option that allows to turn off Datagrid Settings over datagrids.yml configuration.
datagrids:
grid-name:
...
options:
toolbarOptions:
addDatagridSettingsManager: false
See for more information Frontend Datagrid.
jsmodules
datagrids:
grid-name:
# ... some configuration
options:
jsmodules:
- your/builder/amd/module/name
Adds given JS files to the datagrid. JS files should have the ‘init’ method which will be called when the grid builder finishes building the grid.
routerEnabled
type: boolean
default: true
When set to false datagrid will not keep its state (e.g. filtering and/or sorting parameters) in the URL.
datagrids:
grid-name:
# ... some configuration
options:
routerEnabled: false
entityHint
type: string
datagrids:
grid-name:
... # previous configuration
options:
entityHint: oro.account.plural_label
More information on row selection and an example of its usage are available in the Advanced grid configuration article.
rowSelection
datagrids:
grid-name:
... # previous configuration
options:
entityHint: oro.account.plural_label
rowSelection:
dataField: id
columnName: isAssigned # frontend column name
selectors:
included: '#groupAppendUsers' # field selectors
excluded: '#groupRemoveUsers'
More information on row selection and an example of its usage are available in the Advanced grid configuration article.
cellSelection
datagrids:
grid-name:
# previous configuration
options:
cellSelection:
dataField: id
columnName:
- enabled
selector: '#changeset'
More information on row selection and an example of its usage are available in the Advanced grid configuration article.
base_datagrid_class
type: string
default: Oro\Bundle\DatagridBundle\Datagrid\Datagrid
With this option, you can switch the datagrid class to a custom implementation.
mode
Provides the ability to work with the grid in different modes. There are two supported modes:
server (default) - all manipulations with data are performed on the backend side; the grid receives data via AJAX requests.
client - all manipulations with data are performed on the frontend side; no AJAX requests required. The client mode does not currently support filters.
This grid will be rendered and processed in the client mode:
grid-name:
options:
mode: client
...
gridViews
One is a way to set a label for All grid view, via an option in datagrid config:
# ...
options:
gridViews:
allLabel: acme.bundle.translation_key # Translation key for All label
For further details, check the Grid Views Extension section.
noDataMessages
Override the default “no data messages” for empty grid and empty filtered grid.
datagrids:
grid-name:
source:
type: orm
query:
select:
- u.id
- u.username
from:
{ table: Acme\Bundle\DemoBundle\Entity\User, alias:u }
options:
noDataMessages:
emptyGrid: acme.my_custom_empty_grid_message
emptyFilteredGrid: acme.my_custom_empty_filtered_grid_message
# ...
See for more information Advanced Grid Configuration.
properties
type: map
This is used for two things: configure how to determine the id of each row and configure links that will be reused in the actions.
id
type: string
default: ~
The name of the property that acts as an identifier for each entry. By default, the id
property is assumed.
datagrids:
grid-name:
# <grid configuration> goes here
properties:
id: ~ # Identifier property must be passed to frontend
To configure links, use a unique string as an identifier and pass it a map with the following options:
callable
type: string
An expression that will be evaluated when the link is generated.
params
type: map
Additional parameters that are passed to the URL generator together with the configured route name.
route
type: string
The name of the route to the controller action that should be called.
type
type: string
Can be either route
or callable
to use a statically configured route or to dynamically generate a link.
sorters
type: map
The options columns
and default
are used to configure the columns whose headlines can be
clicked to let the user sort the result set and to define by which attributes the grid result is
ordered by default.
The sorters setting should be placed under the sorters tree node.
datagrids:
grid-name:
source:
type: orm
query:
select
- o.label
- 2 as someAlias
- test.some_id as someField
from:
- { table: Acme\Bundle\DemoBundle\Entity\SomeEntity, alias: o }
join:
left:
joinNameOne:
join: o.someEntity
alias: someEntity
joinNameTwo:
join: o.testRel
alias: test
inner:
innerJoinName:
join: o.abcTestRel
alias: abc
columns:
label:
type: field
someColumn:
type: fixed
value_key: someAlias
otherColumn:
disabled: true
....
sorters:
toolbar_sorting: true #optional, shows additional sorting control in toolbar
columns:
label: # column name for view layer
data_name: o.label # property in result set (column name or alias), if main entity has alias
# like in this example it will be added automatically
type: string #optional, affects labels in toolbar sorting
someColumn:
data_name: someAlias
apply_callback: callable # if you want to apply some operations instead of just adding ORDER BY
otherColumn:
disabled: true|false # allows to disable sorting for the column if it is defined somewhere
default:
label: DESC # sorters enabled by default, key is a column name
multiple_sorting: true|false # is multisorting mode enabled ? False by default
disable_default_sorting: true|false # When set to true, no default sorting will be applied
disable_not_selected_option: true|false(default) # If enabled (true) it will hide `not_selected`
(Please select) option from sorting dropdown.
Consider enabling it will work only if there is `default` sorting option available and
`disable_default_sorting` is not true.
In other words `not_selected` will always appear in select dropdown (even if
disable_not_selected_option set to true) in such cases:
1. If a customer already selected 'not_selected' option earlier.
2. If the 'default' option is empty or not defined
3. If the 'disable_default_sorting' option is set to true
Note
Customization can be done using the apply_callback options.
Column name should be equal to the name of the corresponding column.
Disable the sorter if it is defined but the column is disabled
columns
type: map
disabled
type: boolean
default: false
Allows to manage sorter accessibility.
data_name
type: string
Data identifier (column name suggested by default).
A map that contains an entry for each column the user can sort the grid by. Each key is the name of
a column and its value is a map with the key data_name
mapped to the data source column that
will be used to sort the grid.
apply_callback
If you want to apply some operations instead of just adding ORDER BY.
type
type: string
Optional, affects labels in toolbar sorting.
default
type: map
The default
option can be used to control the default ordering of the result set. It is a map
of column names to their respective sort direction (either ASC
or DESC
).
multiple_sorting
type: boolean
default: false
Multisorting mode enable.
disable_default_sorting
type: boolean
default: false
When set to true, no default sorting will be applied.
disable_not_selected_option
type: boolean
default: false
If enabled (true) it will hide not_selected (Please select) option from sorting dropdown. Consider enabling it will work only if there is default sorting option available and disable_default_sorting is not true. In other words not_selected will always appear in select dropdown (even if disable_not_selected_option set to true) in such cases: 1. If a customer already selected ‘not_selected’ option earlier. 2. If the ‘default’ option is empty or not defined 3. If the ‘disable_default_sorting’ option is set to true
source
type: map
The data source that fetches the data to be shown in the grid. Several options control how data are fetched:
acl_resource
type: string
An access control list the user must be granted access to in order to actually fetch any data.
datagrids:
grid-name:
source:
acl_resource: SOME_ACL_IF_NEEDED
bind_parameters
type: sequence
When using the ORM data source (by setting the type option to orm
), you can pass any data
grid parameter as a parameter to the query builder by listing at with this option.
datagrids:
grid-name:
source:
type: orm
query:
select:
- u
from:
{ table: Acme\Bundle\DemoBundle\Entity\User, alias:u }
where:
and:
- u.group = :group_id
bind_parameters:
# Get parameter "group_id" from datagrid
# and set it's value to "group_id" parameter in datasource query
- group_id
The full format for declaring parameters binding is also available:
bind_parameters:
data_in: # option string key will be interpreted as name of parameter in query
path: _parameters.groupId # it will reference to parameter groupId in key _parameters of parameter bag.
default: [0] # some default value, will be used if parameter is not passed
type: array # type applicable with Doctrine: Doctrine\DBAL\Types\Type::getType()
bind_parameters:
-
name: # name of parameter in query
path: _parameters.groupId # it will reference to parameter groupId in key _parameters of parameter bag.
default: [0] # some default value, will be used if parameter is not passed
type: array # type applicable with Doctrine: Doctrine\DBAL\Types\Type::getType()
See more in the parameters binding section.
query
type: map
When using the ORM data source (by setting the type option to orm
), you have to configure
all parts of the Doctrine query:
select
type: sequence
A list of properties to query for. You can use all expressions that you would use with the
from
method of Doctrine’s query builder.
from
type: sequence
The entities to query from. Each entry is a map that must contain the following keys:
table
type: string
The entity class name or the entity alias in the Acme\Bundle\DemoBundle\Entity\MyEntity
notation (for example,
Acme\Bundle\DemoBundle\Entity\User
).
alias
type: string
A shortcut alias which you will use to refer to this entity in other parts of the query.
join
type: map
You can use two keys under this option to configure left joins and inner joins:
inner
type: sequence
Each entry must a map containing the options join
(the property of an already queried
entity that holds the association or an entity), alias
(the alias name you use to refer
to the joined entity in other parts of the query, conditionType
(is only needed when
join
refers to an entity name instead of an association and must be WITH
in that
case) and condition
(a condition expression that will be used to perform the join
instead of deriving it from the association when conditionType
is set to WITH
).
left
type: sequence
The options being used here are the same as the ones in inner
except that the join
being performed will be a left join.
where
type: map
List conditions here that need to be fulfilled. How conditions must be met is defined by the key you used:
and
type: sequence
All conditions must be met.
or
type: sequence
Any of the given conditions must be met.
groupBy
type: string
The query result will be grouped by the given expression.
orderBy
type: sequence
A list of properties to sort the result set by (user defined ordering that can be configured through the sorters option will be applied on top of the order here). Each entry is a map that must contain the following keys:
column
type: string
The column name to sort by.
dir
type: string
The sort direction: ASC
(ascending) or DESC
(descending).
Tip
You can pass any datagrid parameter as a parameter to the generated query by listing it under
the bind_parameters option on the same level as the query
option.
query_builder
Other than the query
yaml-oriented provider, ORM datasource supports an alternative query_builder
service-oriented provider.
For further details, check the Datasource as Service section.
datagrids:
grid-name:
source:
type: orm # datasource type
query_builder: "@acme_demo.user.repository->getUsersQb"
skip_acl_apply
Developing a grid that should not be under ACL control.
datagrids:
grid-name:
# ... some configuration
source:
skip_acl_apply: true
# ... some configuration of source
See for more information Advanced Grid Configuration.
type
type: string
The type of data source. Currently, the only available types are orm
, search
and array
, but
you can also implement your own data source. Each data source may come with its own options to
configure how the data is fetched.
Usually, the only type
value that you will use is orm
(it offers a way to configure the
query builder used to fetch the data, see the query option
for a list of the available additional options).
ORM Datasource
This datasource provides an adapter to access data from the doctrine ORM using the doctrine query builder. You can configure a query using the query
param under the source tree. Example:
datagrids:
grid-name:
source:
type: orm
query:
select:
- email.id
- email.subject
from:
- { table: Oro\Bundle\EmailBundle\Entity\Email, alias: email }
Note
By default, all datagrids that use ORM datasource are marked by the HINT_PRECISE_ORDER_BY query hint. This guarantees that rows are sorted the same way independently of the state of the SQL server and the values of OFFSET and LIMIT clauses.
If you need to disable this behavior for your datagrid, use the following configuration:
datagrids:
grid-name:
source:
type: orm
query:
...
hints:
- { name: HINT_PRECISE_ORDER_BY, value: false }
Array
This datasource provides the ability to set data for the datagrid from the array.
To configure datasource, create a datagrid event listener and subscribe to the oro_datagrid.datagrid.build.after.DATAGRID_NAME_HERE
event.
Predefined columns can be defined using the following configuration:
datagrids:
grid-name:
source:
type: array
columns:
first_column:
label: Column 1 Label
sorters:
columns:
first_column:
data_name: first_column
See for more information datasources.
inline_editing
Inline Editing on a Grid.
datagrids:
grid-name:
inline_editing:
enable: true # this grid will allow to edit some cells
acl_resource: custom_acl_resource
entity_name: Oro\Bundle\UserBundle\Entity\User
behaviour: enable_all
plugin: orodatagrid/js/app/plugins/grid/inline-editing-plugin
default_editors: orodatagrid/js/default-editors
cell_editor:
component: orodatagrid/js/app/components/cell-popup-editor-component
component_options:
{key}: {value}
save_api_accessor:
# api accessor options
{key}: {value}
See for more information Editable Datagrid Cells and Inline Editing.
enable
type: boolean
default: false
Marks or unmarks this column as editable. The behavior depends on main inline_editing.behavior: enable_all - false will disable editing this cell. enable_selected - true will enable editing this cell.
acl_resource
type: string
Enables inline editing if access granted to specified resource. By default is checked EDIT permission to specified entity.
entity_name
Entity class name for saving data. By default it tries to get value from extended_entity_name.
behaviour
default: enable_all
Specifies the way to enable the inline editing. Possible values: enable_all - (default). this will enable inline editing where possible. enable_selected - disable by default, enable only on configured cells.
save_api_accessor
default: {class: 'oroui/js/tools/api-accessor'}
“Required. Describes the way to send update request. Please see documentation for oroui/js/tools/api-accessor
”
plugin
default: orodatagrid/js/app/plugins/grid/inline-editing-plugin
Specifies the plugin realization.
default_editors
default: orodatagrid/js/default-editors
Specifies default editors for front-end types
cell_editor
default: {component: 'orodatagrid/js/app/components/cell-popup-editor-component'}
Specifies default cell_editor_component and their options.
save_api_accessor
datagrids:
grid-name:
# <grid configuration> goes here
save_api_accessor:
http_method: PATCH
route: oro_account_update
Sample usage of the save_api_accessor with full options provided:
save_api_accessor:
route: oro_opportunity_task_update # for example this route uses following mask
# to generate url /api/opportunity/{opportunity_id}/tasks/{id}
http_method: POST
headers:
Api-Secret: ANS2DFN33KASD4F6OEV7M8
default_route_parameters:
opportunity_id: 23
action: patch
query_parameter_names: [action]
Result of the combined options: /api/opportunity/23/tasks/{id}?action=patch
The {id}
is taken from the current row in the grid.
route
type: string
Required. Route name
http_method
type: string
Http method to access this route (e.g., GET/POST/PUT/PATCH. By default ‘GET’.
headers
Optional. Allows to provide additional http headers
default_route_parameters
Optional. Provides default parameters for route, this defaults will be merged the urlParameters to get url
route_parameters_rename_map
Optional. Allows to rename incoming parameters, which came into send() function, to proper names. Please provide here an object with following structure: {<old-name>: <new-name>, …}
query_parameter_names
Optional. Array of parameter names to put into query string (e.g. ?<parameter-name>=<value>&<parameter-name>=<value>). (The reason of adding this argument is that FOSRestBundle doesn’t provides acceptable query parameters for client usage, so it is required to specify list of them).
See for more information Inline Editing.
Please see documentation for oroui/js/tools/api-accessor
”
mass_actions
If you wish to disable a mass action, specify the following:
datagrids:
users-grid:
mass_actions:
name_action:
disabled: true
For example creating Simple Mass Action:
datagrids:
users-grid:
mass_actions:
unlock_user:
type: ajax
label: acme.demo.mass_actions.unlock_user.label
# required, should be valid service
handler: Acme\Bundle\DemoBundle\Datagrid\Extension\MassAction\UserUnlockHandler
# optional for AJAX mass actions
route: oro_datagrid_mass_action
route_parameters: [ ]
icon: unlock
data_identifier: u.id
object_identifier: u
defaultMessages:
confirm_title: acme.demo.mass_actions.unlock_user.confirm_title
confirm_content: acme.demo.mass_actions.unlock_user.confirm_content
confirm_ok: acme.demo.mass_actions.unlock_user.confirm_ok
allowedRequestTypes: [ POST ]
requestType: POST
acl_resource: oro_user_user_update
Note
allowedRequestTypes is intended to use for the mass action request server-side validation. The request is compared to the GET method if it is not specified.
requestType is intended to be used for mass action to override the default HTTP request type GET to one of the allowed types. If it is not specified, the GET type is used.
Alternatively, you can configure a mass action with operations. See Operations on how to configure them.
See for more information Mass Action Extension.
fields_acl
To enable field ACL protection for a column, use the field_acl
section in a datagrid declaration:
fields_acl: #section name
columns:
name: #column name
data_name: a.name #the path to a field in which ACL should be used to protect the column
See Field ACL Extension for more information.
scope
Scopes are intended to resolve conflicts in the UI when you have more than one grid with the same name on the page. Every grid can have its own scope and not affect other grids with the same name.
datagrids:
grid-name:
scope: demo-scope
# ...
See Scopes for more information.
totals
Provides the aggregation of the total, which is displayed in the grid’s footer. See for more information Totals Extension.
datagrids:
grid-name:
source:
[...]
totals:
page_total:
extends: grand_total
per_page: true
hide_if_one_page: true
disabled: false
columns:
name:
label: 'page total'
grand_total:
columns:
name:
label: 'grand total'
contactName:
expr: 'COUNT(o.name)'
formatter: integer
closeDate:
label: 'Oldest'
expr: 'MIN(o.closeDate)'
formatter: date
probability:
label: 'Summary'
expr: 'SUM(o.probability)'
formatter: percent
budget:
label: 'Budget Amount'
expr: 'SUM(o.budget)'
formatter: currency
divisor: 100
statusLabel:
label: oro.sales.opportunity.status.label
appearances
To add board appearance on a grid.
board
datagrids:
{grid-uid}:
# <grid configuration> goes here
appearances:
board:
{board-uid}: #unique board id
label: Board Label
group_by:
property: option_set_field
order_by:
priority: ASC
card_view: demobundle/js/app/views/board/your-entity-card-view
Datagrid Configuration Details
label (Optional): A label to be shown in the appearance switcher.
icon (Optional): The icon class to be shown in the appearance switcher.
group_by (Required): Configuration array for column grouping property.
group_by:
property: status #required, enum property to be used for board columns
order_by: #optional, used to define a property's field, which should be used for column sort order.
priority: ASC
default_column (Optional): Specifies a column ID to show entities with no value set for group_by
property
. By default, the first column will be used.plugin (Optional): Specifies the plugin realization. Default
orodatagrid/js/app/plugins/grid-component/board-appearance-plugin
board_view (Optional): Specifies the view for kanban board. Default
orodatagrid/js/app/views/board/board-view
card_view (Required): Specifies the view for kanban card.
column_header_view (Optional): Specifies the view for board column header. Default
orodatagrid/js/app/views/board/column-header-view
column_view (Optional): Specifies the view for board column. Default
orodatagrid/js/app/views/board/column-view
acl_resource (Optional): Enabled Acl resource checks whether board items transitions are allowed. If no permission is granted to a user, they see the board in read only mode.
processor (Optional): Specified the name of the board processor. default processor is used by default.
default_transition (Optional): Section to specify configuration for the transition, e.g., update property when cards are dragged and dropped from one column to another.
default_transition:
class: #class to be used for transition
params: #additional params to pass to transition
key: value
save_api_accessor: #Describes the way to send update request. Please see documentation for :ref:`oroui/js/tools/api-accessor <bundle-docs-platform-ui-bundle-apiaccessor>`.
See for more information Board Extension.
views_list
Provides the ability to add a list of grid views. Adds filters and sorters from the grid view to the parameters’ filters.
datagrids:
acme-demo-favorite-grid:
views_list: '@acme_demo.favorite_view_list'
See View List for more information.
Related Article