You are here

protected function CommerceBundleEntityFormBase::validateTraitForm in Commerce Core 8.2

Validates the trait form.

Parameters

array $form: An associative array containing the structure of the form.

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

5 calls to CommerceBundleEntityFormBase::validateTraitForm()
OrderItemTypeForm::validateForm in modules/order/src/Form/OrderItemTypeForm.php
Form validation handler.
OrderTypeForm::validateForm in modules/order/src/Form/OrderTypeForm.php
Form validation handler.
ProductTypeForm::validateForm in modules/product/src/Form/ProductTypeForm.php
Form validation handler.
ProductVariationTypeForm::validateForm in modules/product/src/Form/ProductVariationTypeForm.php
Form validation handler.
StoreTypeForm::validateForm in modules/store/src/Form/StoreTypeForm.php
Form validation handler.

File

src/Form/CommerceBundleEntityFormBase.php, line 101

Class

CommerceBundleEntityFormBase

Namespace

Drupal\commerce\Form

Code

protected function validateTraitForm(array &$form, FormStateInterface $form_state) {
  $traits = array_filter($form_state
    ->getValue('traits'));
  $disabled_traits = $form_state
    ->getValue('disabled_traits');
  $traits = array_unique(array_merge($disabled_traits, $traits));
  $original_traits = $form_state
    ->getValue('original_traits');
  $installed_traits = [];
  foreach ($original_traits as $trait_id) {
    $installed_traits[$trait_id] = $this->traitManager
      ->createInstance($trait_id);
  }
  $selected_traits = array_diff($traits, $original_traits);
  foreach ($selected_traits as $trait_id) {
    $trait = $this->traitManager
      ->createInstance($trait_id);
    $conflicts = $this->traitManager
      ->detectConflicts($trait, $installed_traits);
    if ($conflicts) {
      $conflicts = array_map(function ($trait) {
        return $trait
          ->getLabel();
      }, $conflicts);
      $form_state
        ->setError($form['traits'], $this
        ->t('The @trait trait is in conflict with the following traits: @conflict.', [
        '@trait' => $trait
          ->getLabel(),
        '@conflict' => implode(', ', $conflicts),
      ]));
      break;
    }
  }
}