class MachineName

Same name in this branch
  1. 8.9.x core/modules/views/src/Plugin/views/field/MachineName.php \Drupal\views\Plugin\views\field\MachineName
  2. 8.9.x core/lib/Drupal/Core/Render/Element/MachineName.php \Drupal\Core\Render\Element\MachineName
Same name and namespace in other branches
  1. 9 core/modules/views/src/Plugin/views/field/MachineName.php \Drupal\views\Plugin\views\field\MachineName
  2. 9 core/modules/migrate/src/Plugin/migrate/process/MachineName.php \Drupal\migrate\Plugin\migrate\process\MachineName
  3. 9 core/lib/Drupal/Core/Render/Element/MachineName.php \Drupal\Core\Render\Element\MachineName
  4. 10 core/modules/views/src/Plugin/views/field/MachineName.php \Drupal\views\Plugin\views\field\MachineName
  5. 10 core/modules/migrate/src/Plugin/migrate/process/MachineName.php \Drupal\migrate\Plugin\migrate\process\MachineName
  6. 10 core/lib/Drupal/Core/Render/Element/MachineName.php \Drupal\Core\Render\Element\MachineName
  7. 11.x core/modules/views/src/Plugin/views/field/MachineName.php \Drupal\views\Plugin\views\field\MachineName
  8. 11.x core/modules/migrate/src/Plugin/migrate/process/MachineName.php \Drupal\migrate\Plugin\migrate\process\MachineName
  9. 11.x core/lib/Drupal/Core/Render/Element/MachineName.php \Drupal\Core\Render\Element\MachineName

Creates a machine name.

The machine_name process plugin takes the source value and runs it through the transliteration service. This makes the source value lowercase, replaces anything that is not a number or a letter with an underscore, and removes duplicate underscores.

Letters will have language decorations and accents removed.

Example:


process:
  bar:
    plugin: machine_name
    source: foo

If the value of foo in the source is 'áéí!' then the destination value of bar will be 'aei_'.

Plugin annotation


@MigrateProcessPlugin(
  id = "machine_name"
)

Hierarchy

Expanded class hierarchy of MachineName

See also

\Drupal\migrate\Plugin\MigrateProcessInterface

1 file declares its use of MachineName
MachineNameTest.php in core/modules/migrate/tests/src/Unit/process/MachineNameTest.php
4 string references to 'MachineName'
BlockTemplateSuggestionsTest::testBlockThemeHookSuggestions in core/modules/block/tests/src/Kernel/BlockTemplateSuggestionsTest.php
Tests template suggestions from block_theme_suggestions_block().
SystemMenuBlockTest::testConfigExpanded in core/modules/system/tests/src/Kernel/Block/SystemMenuBlockTest.php
Tests the config expanded option.
SystemMenuBlockTest::testConfigLevelDepth in core/modules/system/tests/src/Kernel/Block/SystemMenuBlockTest.php
Tests the config start level and depth.
SystemMenuBlockTest::testSystemMenuBlockConfigDependencies in core/modules/system/tests/src/Kernel/Block/SystemMenuBlockTest.php
Tests calculation of a system menu block's configuration dependencies.

File

core/modules/migrate/src/Plugin/migrate/process/MachineName.php, line 41

Namespace

Drupal\migrate\Plugin\migrate\process
View source
class MachineName extends ProcessPluginBase implements ContainerFactoryPluginInterface {
    
    /**
     * The transliteration service.
     *
     * @var \Drupal\Component\Transliteration\TransliterationInterface
     */
    protected $transliteration;
    
    /**
     * Constructs a MachineName plugin.
     *
     * @param array $configuration
     *   The plugin configuration.
     * @param string $plugin_id
     *   The plugin ID.
     * @param mixed $plugin_definition
     *   The plugin definition.
     * @param \Drupal\Component\Transliteration\TransliterationInterface $transliteration
     *   The transliteration service.
     */
    public function __construct(array $configuration, $plugin_id, $plugin_definition, TransliterationInterface $transliteration) {
        parent::__construct($configuration, $plugin_id, $plugin_definition);
        $this->transliteration = $transliteration;
    }
    
    /**
     * {@inheritdoc}
     */
    public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
        return new static($configuration, $plugin_id, $plugin_definition, $container->get('transliteration'));
    }
    
    /**
     * {@inheritdoc}
     */
    public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
        $new_value = $this->transliteration
            ->transliterate($value, LanguageInterface::LANGCODE_DEFAULT, '_');
        $new_value = strtolower($new_value);
        $new_value = preg_replace('/[^a-z0-9_]+/', '_', $new_value);
        return preg_replace('/_+/', '_', $new_value);
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
MachineName::$transliteration protected property The transliteration service.
MachineName::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create
MachineName::transform public function Performs the associated process. Overrides ProcessPluginBase::transform
MachineName::__construct public function Constructs a MachineName plugin.
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.