fieldViewsDataProvider->defaultFieldImplementation($field_storage) : $data; foreach ($data as $table_name => $table_data) { // Set the 'datetime' filter type. $data[$table_name][$field_storage->getName() . '_' . $column_name]['filter']['id'] = 'datetime'; // Set the 'datetime' argument type. $data[$table_name][$field_storage->getName() . '_' . $column_name]['argument']['id'] = 'datetime'; // Create year, month, and day arguments. $group = $data[$table_name][$field_storage->getName() . '_' . $column_name]['group']; $arguments = [ // Argument type => help text. 'year' => $this->t('Date in the form of YYYY.'), 'month' => $this->t('Date in the form of MM (01 - 12).'), 'day' => $this->t('Date in the form of DD (01 - 31).'), 'week' => $this->t('Date in the form of WW (01 - 53).'), 'year_month' => $this->t('Date in the form of YYYYMM.'), 'full_date' => $this->t('Date in the form of CCYYMMDD.'), ]; foreach ($arguments as $argument_type => $help_text) { $column_name_text = $column_name === $field_storage->getMainPropertyName() ? '' : ':' . $column_name; $data[$table_name][$field_storage->getName() . '_' . $column_name . '_' . $argument_type] = [ 'title' => $this->t('@label@column (@argument)', [ '@label' => $field_storage->getLabel(), '@column' => $column_name_text, '@argument' => $argument_type, ]), 'help' => $help_text, 'argument' => [ 'field' => $field_storage->getName() . '_' . $column_name, 'id' => 'datetime_' . $argument_type, 'entity_type' => $field_storage->getTargetEntityTypeId(), 'field_name' => $field_storage->getName(), ], 'group' => $group, ]; } // Set the 'datetime' sort handler. $data[$table_name][$field_storage->getName() . '_' . $column_name]['sort']['id'] = 'datetime'; } return $data; } }