You are here

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

Form submission 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::submitConfigurationForm

File

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

Class

EntityField
Define the entity field condition base class.

Namespace

Drupal\entity_field_condition\Plugin\Condition

Code

public function submitConfigurationForm(array &$form, FormStateInterface $form_state) : void {
  parent::submitConfigurationForm($form, $form_state);
  $values = $form_state
    ->cleanValues()
    ->getValues();
  if (!isset($values['entity']['bundle']) || empty($values['entity']['bundle'])) {
    $values = [];
  }
  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 = [
          'entity',
          'compare_configuration',
        ];
        $subform = [
          '#parents' => array_merge($parents, $subform_parents),
        ];
        $instance
          ->submitConfigurationForm($subform, SubformState::createForSubform($subform, $form, $form_state));
        NestedArray::setValue($values, $subform_parents, $instance
          ->getConfiguration());
      }
    } catch (\RuntimeException $exception) {
      watchdog_exception('entity_field_condition', $exception);
    }
  }
  $this
    ->setConfiguration($values);
}