You are here

public function EntityField::validateConfigurationForm in Entity Field Condition 2.0.x

Form validation handler.

Parameters

array $form: An associative array containing the structure of the plugin form as built by static::buildConfigurationForm().

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form. Calling code should pass on a subform state created through \Drupal\Core\Form\SubformState::createForSubform().

Overrides ConditionPluginBase::validateConfigurationForm

File

src/Plugin/Condition/EntityField.php, line 353

Class

EntityField
Define the entity field condition base class.

Namespace

Drupal\entity_field_condition\Plugin\Condition

Code

public function validateConfigurationForm(array &$form, FormStateInterface $form_state) : void {
  if ($compare_type_id = $form_state
    ->getValue([
    'entity',
    'compare_type',
  ])) {
    try {

      /** @var \Drupal\entity_field_condition\Plugin\EntityFieldCondition\CompareType\EntityFieldCompareTypePluginBase $instance */
      $instance = $this->entityFieldCompareTypeManager
        ->createInstance($compare_type_id, $this
        ->getCompareTypeConfigurations());
      $parents = $form['#parents'] ?? [];
      if ($instance instanceof EntityFieldCompareTypeInterface) {
        $subform = [
          '#parents' => array_merge($parents, [
            'entity',
            'compare_configuration',
          ]),
        ];
        $instance
          ->validateConfigurationForm($subform, SubformState::createForSubform($subform, $form, $form_state));
      }
    } catch (\RuntimeException $exception) {
      watchdog_exception('entity_field_condition', $exception);
    }
  }
}