You are here

public function ConditionCreatorForm::submitForm in Block Visibility Groups 8

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

block_visibility_groups_admin/src/Form/ConditionCreatorForm.php, line 149

Class

ConditionCreatorForm
Provides a form to create conditions.

Namespace

Drupal\block_visibility_groups_admin\Form

Code

public function submitForm(array &$form, FormStateInterface $form_state) {
  $id = $form_state
    ->getValue('id');
  $label = $form_state
    ->getValue('label');
  $route_name = $form_state
    ->getValue('route_name');
  $conditions = $this
    ->getConditionValues($form_state);
  $configs = [];
  foreach ($conditions as $plugin_id => $plugin_info) {

    /** @var \Drupal\block_visibility_groups_admin\Plugin\ConditionCreatorInterface $plugin */
    $plugin = $this->manager
      ->createInstance($plugin_id, [
      'route_name' => $route_name,
    ]);
    if ($plugin
      ->itemSelected($plugin_info)) {
      $configs[] = $plugin
        ->createConditionConfig($plugin_info);
    }
  }
  $group = $this
    ->createGroup($id, $label, $configs);
  $form_state
    ->setRedirect('entity.block_visibility_group.edit_form', [
    'block_visibility_group' => $group
      ->id(),
  ]);
}