class SkipOnEmpty

Same name and namespace in other branches
  1. 9 core/modules/migrate/src/Plugin/migrate/process/SkipOnEmpty.php \Drupal\migrate\Plugin\migrate\process\SkipOnEmpty
  2. 8.9.x core/modules/migrate/src/Plugin/migrate/process/SkipOnEmpty.php \Drupal\migrate\Plugin\migrate\process\SkipOnEmpty
  3. 10 core/modules/migrate/src/Plugin/migrate/process/SkipOnEmpty.php \Drupal\migrate\Plugin\migrate\process\SkipOnEmpty

Skips processing the current row when the input value is empty.

The skip_on_empty process plugin checks to see if the current input value is empty (empty string, NULL, FALSE, 0, '0', or an empty array). If so, the further processing of the property or the entire row (depending on the chosen method) is skipped and will not be migrated.

Available configuration keys:

  • method: (optional) What to do if the input value is empty. Possible values:

    • row: Skips the entire row when an empty value is encountered.
    • process: Prevents further processing of the input property when the value is empty and sets the value to NULL.
  • message: (optional) A message to be logged in the {migrate_message_*} table for this row. Messages are only logged for the 'row' method. If not set, nothing is logged in the message table.

Examples:


process:
  field_type_exists:
    plugin: skip_on_empty
    method: row
    source: field_name
    message: 'Field field_name is missing'

If 'field_name' is empty, the entire row is skipped and the message 'Field field_name is missing' is logged in the message table.


process:
  parent:
    -
      plugin: skip_on_empty
      method: process
      source: parent
    -
      plugin: migration_lookup
      migration: d6_taxonomy_term

If 'parent' is empty, any further processing of the property is skipped and the next process plugin (migration_lookup) will not be run. If the migration_lookup process is executed it will use 'parent' as the source. Combining skip_on_empty and migration_lookup is a typical process pipeline combination for hierarchical entities where the root entity does not have a parent.


process:
  parent:
    -
      plugin: skip_on_empty
      method: process
      source: parent
    -
      plugin: migration_lookup
      migration: d6_taxonomy_term
      source: original_term

If 'parent' is empty, any further processing of the property is skipped and the next process plugin (migration_lookup) will not be run. If the migration_lookup process is executed it will use 'original_term' as the source.

Attributes

#[MigrateProcess('skip_on_empty')]

Hierarchy

Expanded class hierarchy of SkipOnEmpty

See also

\Drupal\migrate\Plugin\MigrateProcessInterface

1 file declares its use of SkipOnEmpty
SkipOnEmptyTest.php in core/modules/migrate/tests/src/Unit/process/SkipOnEmptyTest.php

File

core/modules/migrate/src/Plugin/migrate/process/SkipOnEmpty.php, line 78

Namespace

Drupal\migrate\Plugin\migrate\process
View source
class SkipOnEmpty extends ProcessPluginBase {
  
  /**
   * Skips the current row when value is not set.
   *
   * @param mixed $value
   *   The input value.
   * @param \Drupal\migrate\MigrateExecutableInterface $migrate_executable
   *   The migration in which this process is being executed.
   * @param \Drupal\migrate\Row $row
   *   The row from the source to process.
   * @param string $destination_property
   *   The destination property currently worked on. This is only used together
   *   with the $row above.
   *
   * @return mixed
   *   The input value, $value, if it is not empty.
   *
   * @throws \Drupal\migrate\MigrateSkipRowException
   *   Thrown if the source property is not set and the row should be skipped,
   *   records with STATUS_IGNORED status in the map.
   */
  public function row($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
    if (!$value) {
      $message = !empty($this->configuration['message']) ? $this->configuration['message'] : '';
      throw new MigrateSkipRowException($message);
    }
    return $value;
  }
  
  /**
   * Stops processing the current property when value is not set.
   *
   * @param mixed $value
   *   The input value.
   * @param \Drupal\migrate\MigrateExecutableInterface $migrate_executable
   *   The migration in which this process is being executed.
   * @param \Drupal\migrate\Row $row
   *   The row from the source to process.
   * @param string $destination_property
   *   The destination property currently worked on. This is only used together
   *   with the $row above.
   *
   * @return mixed
   *   The input value, $value, if it is not empty.
   */
  public function process($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
    if (!$value) {
      $this->stopPipeline();
      return NULL;
    }
    return $value;
  }

}

Members

Title Sort descending Deprecated Modifiers Object type Summary Overriden Title Overrides
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 3
DependencySerializationTrait::__wakeup public function 3
MessengerTrait::$messenger protected property The messenger. 25
MessengerTrait::messenger public function Gets the messenger. 25
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin ID.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 2
PluginBase::getPluginId public function Gets the plugin ID of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable Deprecated public function Determines if the plugin is configurable.
PluginBase::__construct public function Constructs a \Drupal\Component\Plugin\PluginBase object. 82
ProcessPluginBase::$stopPipeline protected property Determines if processing of the pipeline is stopped.
ProcessPluginBase::isPipelineStopped public function Determines if the pipeline should stop processing. Overrides MigrateProcessInterface::isPipelineStopped
ProcessPluginBase::multiple public function Indicates whether the returned value requires multiple handling. Overrides MigrateProcessInterface::multiple 3
ProcessPluginBase::reset public function Resets the internal data of a plugin. Overrides MigrateProcessInterface::reset
ProcessPluginBase::stopPipeline protected function Stops pipeline processing after this plugin finishes.
ProcessPluginBase::transform public function Performs the associated process. Overrides MigrateProcessInterface::transform 74
SkipOnEmpty::process public function Stops processing the current property when value is not set.
SkipOnEmpty::row public function Skips the current row when value is not set.
StringTranslationTrait::$stringTranslation protected property The string translation service. 3
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language. 1

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.