function ContextConfigure::submitForm

Same name and namespace in other branches
  1. 4.0.x src/Form/ContextConfigure.php \Drupal\ctools\Form\ContextConfigure::submitForm()

Form submission handler.

Parameters

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

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

Overrides FormInterface::submitForm

File

src/Form/ContextConfigure.php, line 185

Class

ContextConfigure
Configure Context Form.

Namespace

Drupal\ctools\Form

Code

public function submitForm(array &$form, FormStateInterface $form_state) {
  $cached_values = $this->tempstore
    ->get($this->tempstore_id)
    ->get($this->machine_name);
  $contexts = $this->getContexts($cached_values);
  if ($form_state->getValue('machine_name') != $form_state->getValue('context_id')) {
    $data_type = $form_state->getValue('context_id');
    if (strpos($data_type, 'entity:') === 0) {
      $context_definition = new EntityContextDefinition($data_type, $form_state->getValue('label'), TRUE, FALSE, $form_state->getValue('description'));
    }
    else {
      $context_definition = new ContextDefinition($data_type, $form_state->getValue('label'), TRUE, FALSE, $form_state->getValue('description'));
    }
  }
  else {
    $context = $contexts[$form_state->getValue('machine_name')];
    $context_definition = $context->getContextDefinition();
    $context_definition->setLabel($form_state->getValue('label'));
    $context_definition->setDescription($form_state->getValue('description'));
  }
  // We're dealing with an entity and should make sure it's loaded.
  if (strpos($context_definition->getDataType(), 'entity:') === 0) {
    [
      ,
      $entity_type,
    ] = explode(':', $context_definition->getDataType());
    if (is_numeric($form_state->getValue('context_value'))) {
      $value = $this->entityTypeManager
        ->getStorage($entity_type)
        ->load($form_state->getValue('context_value'));
    }
  }
  else {
    $value = $form_state->getValue('context_value');
  }
  $context = new Context($context_definition, $value);
  $cached_values = $this->addContext($cached_values, $form_state->getValue('machine_name'), $context);
  $this->tempstore
    ->get($this->tempstore_id)
    ->set($this->machine_name, $cached_values);
  [
    $route_name,
    $route_parameters,
  ] = $this->getParentRouteInfo($cached_values);
  $form_state->setRedirect($route_name, $route_parameters);
}