/** * Get Columns data from url * * @param DatagridConfiguration $config * @param MetadataObject $data * * @return array $columnsData */ protected function updateColumnsDataFromUrl(DatagridConfiguration $config, MetadataObject $data) { $columnsData = []; if ($this->getParameters() && $this->getParameters()->has(self::MINIFIED_COLUMNS_PARAM)) { /** Get columns data parameters from URL */ $columnsParam = $this->getParameters()->get(self::MINIFIED_COLUMNS_PARAM, []); /** @var array $columnsConfigData */ $columnsConfigData = $this->getColumnsWithOrder($config); /** @var array $minifiedColumnsState */ $minifiedColumnsState = $this->columnsHelper->prepareColumnsParam($columnsConfigData, $columnsParam); $columns = $data->offsetGetOr(self::COLUMNS_PATH, []); foreach ($columns as $key => $column) { if (isset($column['name']) && isset($minifiedColumnsState[$column['name']])) { $name = $column['name']; $columnData = $minifiedColumnsState[$name]; if (array_key_exists(self::ORDER_FIELD_NAME, $columnData)) { $columns[$key][self::ORDER_FIELD_NAME] = $columnData[self::ORDER_FIELD_NAME]; $columnsData[$name][self::ORDER_FIELD_NAME] = $columnData[self::ORDER_FIELD_NAME]; } if (array_key_exists(self::RENDER_FIELD_NAME, $columnData)) { $columns[$key][self::RENDER_FIELD_NAME] = $columnData[self::RENDER_FIELD_NAME]; $columnsData[$name][self::RENDER_FIELD_NAME] = $columnData[self::RENDER_FIELD_NAME]; } } } $data->offsetSetByPath(self::COLUMNS_PATH, $columns); if (!empty($columnsData)) { $this->setState($data, $columnsData); } } return $columnsData; }
/** * @param array $columnsConfigArray * @param string $columns * @param array $result * * @dataProvider prepareColumnsParamProvider */ public function testPrepareColumnsParam($columnsConfigArray, $columns, $result) { $columnsData = $this->columnsHelper->prepareColumnsParam($columnsConfigArray, $columns); static::assertEquals($columnsData, $result); }