Array Datasource
This datasource provides the ability to set data for the datagrid from the array.
Example
datagrids:
DATAGRID_NAME_HERE:
source:
type: array
Configuration
To configure datasource, create a datagrid event listener and subscribe to the oro_datagrid.datagrid.build.after.DATAGRID_NAME_HERE
event.
acme_demo.event_listener.datagrid.my_custom_listener:
class: Acme\Bundle\DemoBundle\EventListener\Datagrid\MyCustomListener
tags:
- { name: kernel.event_listener, event: oro_datagrid.datagrid.build.after.DATAGRID_NAME_HERE, method: onBuildAfter }
namespace Acme\Bundle\DemoBundle\EventListener\Datagrid;
use Oro\Bundle\DataGridBundle\Datasource\ArrayDatasource\ArrayDatasource;
use Oro\Bundle\DataGridBundle\Event\BuildAfter;
use Oro\Bundle\DataGridBundle\Exception\UnexpectedTypeException;
class MyCustomListener
{
/**
* @param BuildAfter $event
* @return void
*/
public function onBuildAfter(BuildAfter $event): void
{
$datagrid = $event->getDatagrid();
$datasource = $datagrid->getDatasource();
if (!$datasource instanceof ArrayDatasource) {
throw new UnexpectedTypeException($datasource, ArrayDatasource::class);
}
// Create datagrid source array
$source = [
// row 1
[
'first_column' => 'Value in first row and first column',
'second_column' => 'Value in first row and second column',
],
// row 2
[
'first_column' => 'Value in second row and first column',
'second_column' => 'Value in second row and second column',
],
// ...
];
$datasource->setArraySource($source);
}
}
Predefined columns can be defined using the following configuration:
datagrids:
DATAGRID_NAME_HERE:
source:
type: array
columns:
first_column:
label: Column 1 Label
sorters:
columns:
first_column:
data_name: first_column
Related Articles