class Callback

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

Passes the source value to a callback.

The callback process plugin allows simple processing of the value, such as strtolower(). To pass more than one argument, pass an array as the source and set the unpack_source option.

Available configuration keys:

  • callable: The name of the callable method.
  • unpack_source: (optional) Whether to interpret the source as an array of arguments.

Examples:


process:
  destination_field:
    plugin: callback
    callable: mb_strtolower
    source: source_field

An example where the callable is a static method in a class:


process:
  destination_field:
    plugin: callback
    callable:
      - '\Drupal\Component\Utility\Unicode'
      - ucfirst
    source: source_field

An example where the callback accepts no arguments:


process:
  time:
    plugin: callback
    callable: time
    unpack_source: true
    source: [  ]

An example where the callback accepts more than one argument:


source:
  plugin: source_plugin_goes_here
  constants:
    slash: /
process:
  field_link_url:
    plugin: callback
    callable: rtrim
    unpack_source: true
    source:
      - url
      - constants/slash

This will remove the trailing '/', if any, from a URL.

Plugin annotation


@MigrateProcessPlugin(
  id = "callback"
)

Hierarchy

Expanded class hierarchy of Callback

See also

\Drupal\migrate\Plugin\MigrateProcessInterface

1 file declares its use of Callback
CallbackTest.php in core/modules/migrate/tests/src/Unit/process/CallbackTest.php
24 string references to 'Callback'
BubbleableMetadataTest::providerTestMerge in core/tests/Drupal/Tests/Core/Render/BubbleableMetadataTest.php
Provides test data for testMerge().
ConstraintManager::registerDefinitions in core/lib/Drupal/Core/Validation/ConstraintManager.php
Callback for registering definitions for constraints shipped with Symfony.
d6_action.yml in core/modules/system/migrations/d6_action.yml
core/modules/system/migrations/d6_action.yml
d6_custom_block_translation.yml in core/modules/content_translation/migrations/d6_custom_block_translation.yml
core/modules/content_translation/migrations/d6_custom_block_translation.yml
d6_menu_links.yml in core/modules/menu_link_content/migrations/d6_menu_links.yml
core/modules/menu_link_content/migrations/d6_menu_links.yml

... See full list

File

core/modules/migrate/src/Plugin/migrate/process/Callback.php, line 80

Namespace

Drupal\migrate\Plugin\migrate\process
View source
class Callback extends ProcessPluginBase {
    
    /**
     * {@inheritdoc}
     */
    public function __construct(array $configuration, $plugin_id, $plugin_definition) {
        if (!isset($configuration['callable'])) {
            throw new \InvalidArgumentException('The "callable" must be set.');
        }
        elseif (!is_callable($configuration['callable'])) {
            throw new \InvalidArgumentException('The "callable" must be a valid function or method.');
        }
        parent::__construct($configuration, $plugin_id, $plugin_definition);
    }
    
    /**
     * {@inheritdoc}
     */
    public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
        if (!empty($this->configuration['unpack_source'])) {
            if (!is_array($value)) {
                throw new MigrateException(sprintf("When 'unpack_source' is set, the source must be an array. Instead it was of type '%s'", gettype($value)));
            }
            return call_user_func($this->configuration['callable'], ...$value);
        }
        return call_user_func($this->configuration['callable'], $value);
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
Callback::transform public function Performs the associated process. Overrides ProcessPluginBase::transform
Callback::__construct public function
PluginInspectionInterface::getPluginDefinition public function Gets the definition of the plugin implementation. 6
PluginInspectionInterface::getPluginId public function Gets the plugin_id of the plugin instance. 2
ProcessPluginBase::multiple public function Indicates whether the returned value requires multiple handling. Overrides MigrateProcessInterface::multiple 3

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