public function File::process in YAML Content 8
Processes field data.
Parameters
\Drupal\yaml_content\Plugin\ProcessingContext $context: The processing context.
array $field_data: The field data.
Return value
array|int The entity id.
Throws
\Drupal\Core\TypedData\Exception\MissingDataException Error for missing data.
Overrides YamlContentProcessInterface::process
See also
\Drupal\yaml_content\Plugin\YamlContentProcessManager::preprocessFieldData()
File
- src/Plugin/ yaml_content/ process/ File.php, line 25 
Class
- File
- Plugin for processing and loading a file attachment.
Namespace
Drupal\yaml_content\Plugin\yaml_content\processCode
public function process(ProcessingContext $context, array &$field_data) {
  $entity_type = $this->configuration[0];
  $filter_params = $this->configuration[1];
  $filename = $filter_params['filename'];
  $directory = '/data_files/';
  // If the entity type is an image, look in to the /images directory.
  if ($entity_type == 'image') {
    $directory = '/images/';
  }
  // TODO path not set.
  $output = file_get_contents($context
    ->getContentLoader()
    ->getContentPath() . $directory . $filename);
  if ($output !== FALSE) {
    $destination = 'public://';
    // Look-up the field's directory configuation.
    if ($directory = $context
      ->getField()
      ->getSetting('file_directory')) {
      $directory = trim($directory, '/');
      $directory = PlainTextOutput::renderFromHtml(\Drupal::token()
        ->replace($directory));
      if ($directory) {
        $destination .= $directory . '/';
      }
    }
    // Create the destination directory if it does not already exist.
    \Drupal::service('file_system')
      ->prepareDirectory($destination, FileSystemInterface::CREATE_DIRECTORY);
    // Save the file data or return an existing file.
    $file = file_save_data($output, $destination . $filename, FileSystemInterface::EXISTS_REPLACE);
    // Use the newly created file id as the value.
    $field_data['target_id'] = $file
      ->id();
    // Remove process data to avoid issues when setting the value.
    unset($field_data['#process']);
    return $file
      ->id();
  }
  $this
    ->throwParamError('Unable to process file content', $entity_type, $filter_params);
}