function ProcessField::callMethodOnFieldPlugin

Same name and namespace in other branches
  1. 9 core/modules/field/src/Plugin/migrate/process/ProcessField.php \Drupal\field\Plugin\migrate\process\ProcessField::callMethodOnFieldPlugin()
  2. 8.9.x core/modules/field/src/Plugin/migrate/process/ProcessField.php \Drupal\field\Plugin\migrate\process\ProcessField::callMethodOnFieldPlugin()
  3. 10 core/modules/field/src/Plugin/migrate/process/ProcessField.php \Drupal\field\Plugin\migrate\process\ProcessField::callMethodOnFieldPlugin()

Instantiate a field plugin and call a method on it.

Parameters

\Drupal\migrate_drupal\Plugin\MigrateFieldPluginManagerInterface $field_plugin_manager: The field plugin manager.

string $field_type: The field type for which to get the field plugin.

string $method: The method to call on the field plugin.

\Drupal\migrate\Row $row: The row from the source to process.

Return value

mixed The return value from the method called on the field plugin.

1 call to ProcessField::callMethodOnFieldPlugin()
ProcessField::transform in core/modules/field/src/Plugin/migrate/process/ProcessField.php
Performs the associated process.

File

core/modules/field/src/Plugin/migrate/process/ProcessField.php, line 127

Class

ProcessField
Get the value from a method call on a field plugin instance.

Namespace

Drupal\field\Plugin\migrate\process

Code

protected function callMethodOnFieldPlugin(MigrateFieldPluginManagerInterface $field_plugin_manager, $field_type, $method, Row $row) {
    $plugin_id = $field_plugin_manager->getPluginIdFromFieldType($field_type, [], $this->migration);
    $plugin_instance = $field_plugin_manager->createInstance($plugin_id, [], $this->migration);
    if (!is_callable([
        $plugin_instance,
        $method,
    ])) {
        throw new MigrateException('The specified method does not exist or is not callable.');
    }
    return call_user_func_array([
        $plugin_instance,
        $method,
    ], [
        $row,
    ]);
}

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