function BlockForm::validateVisibility

Same name in other branches
  1. 9 core/modules/block/src/BlockForm.php \Drupal\block\BlockForm::validateVisibility()
  2. 10 core/modules/block/src/BlockForm.php \Drupal\block\BlockForm::validateVisibility()
  3. 11.x core/modules/block/src/BlockForm.php \Drupal\block\BlockForm::validateVisibility()

Helper function to independently validate the visibility UI.

Parameters

array $form: A nested array form elements comprising the form.

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

1 call to BlockForm::validateVisibility()
BlockForm::validateForm in core/modules/block/src/BlockForm.php
Form validation handler.
1 method overrides BlockForm::validateVisibility()
BlockEntitySettingTrayForm::validateVisibility in core/modules/settings_tray/src/Block/BlockEntitySettingTrayForm.php
Helper function to independently validate the visibility UI.

File

core/modules/block/src/BlockForm.php, line 323

Class

BlockForm
Provides form for block instance forms.

Namespace

Drupal\block

Code

protected function validateVisibility(array $form, FormStateInterface $form_state) {
    // Validate visibility condition settings.
    foreach ($form_state->getValue('visibility') as $condition_id => $values) {
        // All condition plugins use 'negate' as a Boolean in their schema.
        // However, certain form elements may return it as 0/1. Cast here to
        // ensure the data is in the expected type.
        if (array_key_exists('negate', $values)) {
            $form_state->setValue([
                'visibility',
                $condition_id,
                'negate',
            ], (bool) $values['negate']);
        }
        // Allow the condition to validate the form.
        $condition = $form_state->get([
            'conditions',
            $condition_id,
        ]);
        $condition->validateConfigurationForm($form['visibility'][$condition_id], SubformState::createForSubform($form['visibility'][$condition_id], $form, $form_state));
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.