commerce_import-8.x-1.x-dev/src/Hook/FormMigrationEditFormAlter.php

src/Hook/FormMigrationEditFormAlter.php
<?php

namespace Drupal\commerce_import\Hook;

use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\Yaml\Yaml;

/**
 * Hook Cron.
 */
class FormMigrationEditFormAlter extends ControllerBase {

  /**
   * Hook.
   */
  public static function hook(&$form, &$form_state, $form_id) {
    $name = $form['id']['#default_value'];
    $config = \Drupal::config("migrate_plus.migration.{$name}");
    $source_plugins = self::getMigrationPlugins();
    $form['migrations-edit'] = [
      '#type' => 'details',
      '#title' => t('Migration Edit'),
      '#open' => TRUE,
      'migrations-source' => [
        '#type' => 'select',
        '#title' => 'Source Plugin',
        '#options' => $source_plugins,
        '#default_value' => $config->get('source')['plugin'],
      ],
      'migrations-process' => [
        '#title' => 'process',
        '#type' => 'textarea',
        '#attributes' => ['data-yaml-editor' => 'true'],
        '#default_value' => Yaml::dump($config->get('process'), 6),
      ],
    ];
    array_unshift($form['#validate'], "Drupal\commerce_import\Hook\FormMigrationEditFormAlter::submitConfig");
  }

  /**
   * Migration Plugins.
   */
  protected static function getMigrationPlugins() {
    $manager = FALSE;
    $plugins = [];
    try {
      $manager = \Drupal::service('plugin.manager.migrate.source');
    }
    catch (\Exception $e) {
      return FALSE;
    }
    if ($manager) {
      foreach ($manager->getDefinitions() as $key => $source) {
        $plugins[$key] = "$key ({$source['provider'][0]})";
      }
    }
    return $plugins;
  }

  /**
   * Submit.
   */
  public static function submitConfig(array &$form, $form_state) {
    $source = ['plugin' => $form_state->getValue('migrations-source')];
    $process = Yaml::parse($form_state->getValue('migrations-process'));
    $name = $form['id']['#default_value'];
    $config = \Drupal::service('config.factory')->getEditable("migrate_plus.migration.{$name}");
    $config
      ->set('source', $source)
      ->set('process', $process)
      ->save();
    $form_state->setErrorByName('label', t('Error Message'));
    return FALSE;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc