You are here

public static function BusinessRulesViewsSelection::settingsFormValidate in Business Rules 8

Same name and namespace in other branches
  1. 2.x src/Plugin/EntityReferenceSelection/BusinessRulesViewsSelection.php \Drupal\business_rules\Plugin\EntityReferenceSelection\BusinessRulesViewsSelection::settingsFormValidate()

Element validate; Check View is valid.

File

src/Plugin/EntityReferenceSelection/BusinessRulesViewsSelection.php, line 117

Class

BusinessRulesViewsSelection
Plugin override of the 'selection' entity_reference.

Namespace

Drupal\business_rules\Plugin\EntityReferenceSelection

Code

public static function settingsFormValidate($element, FormStateInterface $form_state, $form) {

  // Split view name and display name from the 'view_and_display' value.
  if (!empty($element['view_and_display']['#value'])) {
    list($view, $display) = explode(':', $element['view_and_display']['#value']);
  }
  else {
    $form_state
      ->setError($element, t('The views entity selection mode requires a view.'));
    return;
  }

  // Explode the 'arguments' string into an actual array. Beware, explode()
  // turns an empty string into an array with one empty string. We'll need an
  // empty array instead.
  $arguments_string = trim($element['arguments']['#value']);
  if ($arguments_string === '') {
    $arguments = [];
  }
  else {

    // array_map() is called to trim whitespaces from the arguments.
    $arguments = array_map('trim', explode(',', $arguments_string));
  }
  $value = [
    'view_name' => $view,
    'display_name' => $display,
    'arguments' => $arguments,
    'parent_field' => $element['parent_field']['#value'],
    'reference_parent_by_uuid' => $element['reference_parent_by_uuid']['#value'],
  ];
  $form_state
    ->setValueForElement($element, $value);
}