/** * {@inheritdoc} */ public function convertToExportFormat(array $exportedRecord, $skipNullValues = true) { if ($this->context->getValue('columns')) { $columns = $this->context->getValue('columns'); } elseif ($this->context->hasOption('gridName')) { $gridName = $this->context->getOption('gridName'); $gridConfig = $this->gridManagerLink->getService()->getConfigurationForGrid($gridName); $columns = $gridConfig->offsetGet('columns'); } else { throw new InvalidConfigurationException('Configuration of datagrid export processor must contain "gridName" or "columns" options.'); } if ($this->context->hasOption('gridParameters')) { $gridParams = $this->context->getOption('gridParameters'); if ($gridParams->has(ColumnsExtension::COLUMNS_PARAM)) { $columnsParams = $gridParams->get(ColumnsExtension::COLUMNS_PARAM); $columns = $this->columnsHelper->reorderColumns($columns, $columnsParams); } } $result = []; foreach ($columns as $columnName => $column) { if (isset($column['renderable']) && false === $column['renderable']) { continue; } $val = isset($exportedRecord[$columnName]) ? $exportedRecord[$columnName] : null; $val = $this->applyFrontendFormatting($val, $column); $result[$this->translator->trans($column['label'])] = $val; } return $result; }
/** * @param DatagridConfiguration $config * * @return array */ protected function getColumnsWithOrder(DatagridConfiguration $config) { $columnsData = $config->offsetGet(self::COLUMNS_PATH); $columnsOrder = $this->columnsHelper->buildColumnsOrder($columnsData); $columns = $this->applyColumnsOrderAndRender($columnsData, $columnsOrder); return $columns; }
/** * @param DatagridConfiguration $config * @param bool $default * * @return array */ protected function getColumnsWithOrder(DatagridConfiguration $config, $default = false) { if (!$default) { $params = $this->getParameters()->get(ParameterBag::ADDITIONAL_PARAMETERS, []); $defaultGridView = $this->getDefaultGridView($config->getName()); if (isset($params['view']) && $defaultGridView && $params['view'] === $defaultGridView->getId()) { return $defaultGridView->getColumnsData(); } } $columnsData = $config->offsetGet(self::COLUMNS_PATH); $columnsOrder = $this->columnsHelper->buildColumnsOrder($columnsData); $columns = $this->applyColumnsOrderAndRender($columnsData, $columnsOrder); return $columns; }
/** * Test reorder column for export grid * * @param array $columnsArray * @param string $columnsParams * @param array $result * * @dataProvider reorderColumnsProvider */ public function testReorderColumns($columnsArray, $columnsParams, $result) { $isEqual = $this->columnsHelper->reorderColumns($columnsArray, $columnsParams); static::assertEquals($isEqual, $result); }