class PathSetTranslated

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

A process plugin to update the path of a translated node.

Available configuration keys:

  • source: An array of two values, the first being the original path, and the second being an array of the format [nid, langcode] if a translated node exists (likely from a migration lookup). Paths not of the format '/node/<nid>' will pass through unchanged, as will any inputs with invalid or missing translated nodes.

This plugin will return the correct path for the translated node if the above conditions are met, and will return the original path otherwise.

Example: node_translation: - plugin: explode source: source delimiter: / - # If the source path has no slashes return a dummy default value. plugin: extract default: 'INVALID_NID' index:

  • 1

- plugin: migration_lookup migration: d7_node_translation _path: plugin: concat source:

  • constants/slash
  • source

path: plugin: path_set_translated source:

  • '@_path'
  • '@node_translation'

In the example above, if the node_translation lookup succeeds and the original path is of the format '/node/<original node nid>', then the new path will be set to '/node/<translated node nid>'

Plugin annotation


@MigrateProcessPlugin(
  id = "path_set_translated"
)

Hierarchy

Expanded class hierarchy of PathSetTranslated

1 file declares its use of PathSetTranslated
PathSetTranslatedTest.php in core/modules/path/tests/src/Unit/migrate/process/PathSetTranslatedTest.php

File

core/modules/path/src/Plugin/migrate/process/PathSetTranslated.php, line 57

Namespace

Drupal\path\Plugin\migrate\process
View source
class PathSetTranslated extends ProcessPluginBase {
    
    /**
     * {@inheritdoc}
     */
    public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
        if (!is_array($value)) {
            throw new MigrateException("The input value should be an array.");
        }
        $path = $value[0] ?? '';
        $nid = is_array($value[1]) && isset($value[1][0]) ? $value[1][0] : FALSE;
        if (preg_match('/^\\/node\\/\\d+$/', $path) && $nid) {
            return '/node/' . $nid;
        }
        return $path;
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
PathSetTranslated::transform public function Performs the associated process. Overrides ProcessPluginBase::transform
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.