You are here

public function ConditionCreatorForm::validateForm in Block Visibility Groups 8

Form validation 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 FormBase::validateForm

File

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

Class

ConditionCreatorForm
Provides a form to create conditions.

Namespace

Drupal\block_visibility_groups_admin\Form

Code

public function validateForm(array &$form, FormStateInterface $form_state) {
  $conditions = $this
    ->getConditionValues($form_state);
  $route_name = $form_state
    ->getValue('route_name');
  $parameters = $form_state
    ->getValue('parameters');
  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,
      'parameters' => $parameters,
    ]);
    if ($plugin
      ->itemSelected($plugin_info)) {

      // At least 1 condition setting selected.
      return;
    }
  }
  $form_state
    ->setErrorByName('conditions', $this
    ->t('At least one condition must be selected'));
}