3 namespace Drupal\migrate\Plugin\migrate\process;
5 use Drupal\Core\Entity\EntityInterface;
6 use Drupal\Core\Entity\EntityStorageInterface;
7 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
8 use Drupal\migrate\Plugin\MigrationInterface;
9 use Drupal\migrate\MigrateExecutableInterface;
10 use Drupal\migrate\ProcessPluginBase;
11 use Drupal\migrate\Row;
12 use Symfony\Component\DependencyInjection\ContainerInterface;
15 * This plugin checks if a given entity exists.
17 * Example usage with configuration:
20 * plugin: entity_exists
22 * entity_type: taxonomy_term
25 * @MigrateProcessPlugin(
26 * id = "entity_exists"
29 class EntityExists extends ProcessPluginBase implements ContainerFactoryPluginInterface {
34 * @var \Drupal\Core\Entity\EntityStorageInterface
39 * EntityExists constructor.
41 * @param array $configuration
42 * A configuration array containing information about the plugin instance.
43 * @param string $plugin_id
45 * @param mixed $plugin_definition
46 * The plugin implementation definition.
50 public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityStorageInterface $storage) {
51 parent::__construct($configuration, $plugin_id, $plugin_definition);
52 $this->storage = $storage;
58 public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
63 $container->get('entity_type.manager')->getStorage($configuration['entity_type'])
70 public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
71 if (is_array($value)) {
72 $value = reset($value);
75 $entity = $this->storage->load($value);
76 if ($entity instanceof EntityInterface) {