You are here

public function CommerceAutoSkuForm::buildForm in Commerce AutoSKU 8.2

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides FormInterface::buildForm

File

src/Form/CommerceAutoSkuForm.php, line 78
Contains \Drupal\commerce_autosku\Controller\CommerceAutoSkuForm.

Class

CommerceAutoSkuForm
Class CommerceAutoSkuForm.

Namespace

Drupal\commerce_autosku\Form

Code

public function buildForm(array $form, FormStateInterface $form_state, $commerce_product_variation_type = NULL) {

  /** @var ProductVariationTypeInterface entity */
  $this->entity = $commerce_product_variation_type;
  $configuration = $this->entity
    ->getThirdPartySettings('commerce_autosku');
  $form['mode'] = [
    '#type' => 'radios',
    '#default_value' => isset($configuration['mode']) ? $configuration['mode'] : CommerceAutoSkuManager::DISABLED,
    '#options' => CommerceAutoSkuManager::commerce_autosku_options(),
  ];
  $definition = $this->pluginManager
    ->getDefinitions();
  $plugins = array_column($definition, 'label', 'id');
  asort($plugins);

  //    $plugin = $this->getget('');
  //
  //    // Use the first available plugin as the default value.
  //    if (!$gateway->getPluginId()) {
  //      $plugin_ids = array_keys($plugins);
  //      $plugin = reset($plugin_ids);
  //      $gateway->setPluginId($plugin);
  //    }
  // The form state will have a plugin value if #ajax was used.
  //    $plugin = $form_state->getValue('plugin');
  // Pass the plugin configuration only if the plugin hasn't been changed via #ajax.
  $form['actions']['#type'] = 'actions';
  $form['actions']['submit'] = [
    '#type' => 'submit',
    '#value' => $this
      ->t('Save configuration'),
    '#button_type' => 'primary',
  ];

  // By default, render the form using system-config-form.html.twig.
  $form['#theme'] = 'system_config_form';
  if (!empty($configuration['plugin']) && !isset($plugins[$configuration['plugin']])) {
    return $form;
  }
  $wrapper_id = Html::getUniqueId('commerce-autosku-plugin-form');
  $form['plugin'] = [
    '#type' => 'radios',
    '#title' => t('Plugin'),
    '#options' => $plugins,
    '#required' => TRUE,
    '#ajax' => [
      'callback' => '::ajaxRefresh',
      'wrapper' => $wrapper_id,
    ],
  ];
  if (!empty($configuration['plugin']) && isset($plugins[$configuration['plugin']])) {
    $form['plugin']['#default_value'] = $configuration['plugin'];
    $form['configuration'] = [
      '#type' => 'commerce_plugin_configuration',
      '#plugin_type' => 'commerce_autosku_generator',
      '#plugin_id' => $configuration['plugin'],
    ];
    if (!is_null($configuration['configuration'])) {
      $form['configuration']['#default_value'] = $configuration['configuration'];
    }
  }
  return $form;
}