MachineName.php
Same filename in this branch
Same filename in other branches
- 9 core/modules/views/src/Plugin/views/field/MachineName.php
- 9 core/modules/migrate/src/Plugin/migrate/process/MachineName.php
- 9 core/lib/Drupal/Core/Render/Element/MachineName.php
- 10 core/modules/views/src/Plugin/views/field/MachineName.php
- 10 core/modules/migrate/src/Plugin/migrate/process/MachineName.php
- 10 core/lib/Drupal/Core/Render/Element/MachineName.php
- 11.x core/modules/views/src/Plugin/views/field/MachineName.php
- 11.x core/modules/migrate/src/Plugin/migrate/process/MachineName.php
- 11.x core/lib/Drupal/Core/Render/Element/MachineName.php
Namespace
Drupal\migrate\Plugin\migrate\processFile
-
core/
modules/ migrate/ src/ Plugin/ migrate/ process/ MachineName.php
View source
<?php
namespace Drupal\migrate\Plugin\migrate\process;
use Drupal\Component\Transliteration\TransliterationInterface;
use Drupal\Core\Language\LanguageInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\migrate\ProcessPluginBase;
use Drupal\migrate\MigrateExecutableInterface;
use Drupal\migrate\Row;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* 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:
*
* @code
* process:
* bar:
* plugin: machine_name
* source: foo
* @endcode
*
* If the value of foo in the source is 'áéí!' then the destination value of bar
* will be 'aei_'.
*
* @see \Drupal\migrate\Plugin\MigrateProcessInterface
*
* @MigrateProcessPlugin(
* id = "machine_name"
* )
*/
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);
}
}
Classes
Title | Deprecated | Summary |
---|---|---|
MachineName | Creates a machine name. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.