You are here

protected function FilterAddForm::buildValueElement in Entity Share 8.3

Same name and namespace in other branches
  1. 8 modules/entity_share_server/src/Form/FilterAddForm.php \Drupal\entity_share_server\Form\FilterAddForm::buildValueElement()
  2. 8.2 modules/entity_share_server/src/Form/FilterAddForm.php \Drupal\entity_share_server\Form\FilterAddForm::buildValueElement()

Helper function to generate filter form elements.

Parameters

array $form: The form array.

\Drupal\Core\Form\FormStateInterface $form_state: The form state object.

1 call to FilterAddForm::buildValueElement()
FilterAddForm::form in modules/entity_share_server/src/Form/FilterAddForm.php
Gets the actual form array to be built.

File

modules/entity_share_server/src/Form/FilterAddForm.php, line 117

Class

FilterAddForm
Form to add a filter on a channel.

Namespace

Drupal\entity_share_server\Form

Code

protected function buildValueElement(array &$form, FormStateInterface $form_state) {
  $selected_operator = $form_state
    ->getValue('operator');

  // No operator selected.
  if (empty($selected_operator)) {
    return;
  }

  // Operators which do not require value.
  if (in_array($selected_operator, OperatorsHelper::getStandAloneOperators())) {
    return;
  }

  // Check the number of values.
  $number_of_values = $form_state
    ->get('number_of_values');

  // We have to ensure that there is at least one value field.
  if ($number_of_values === NULL) {
    $number_of_values = 1;
    $form_state
      ->set('number_of_values', $number_of_values);
  }
  for ($i = 0; $i < $number_of_values; $i++) {
    $form['value_wrapper']['value'][$i] = [
      '#type' => 'textfield',
      '#title' => $this
        ->t('Value'),
    ];
  }
  $form['value_wrapper']['actions'] = [
    '#type' => 'actions',
  ];
  $form['value_wrapper']['actions']['add_one_value'] = [
    '#type' => 'submit',
    '#value' => $this
      ->t('Add a value'),
    '#submit' => [
      '::addOneValue',
    ],
    '#ajax' => [
      'callback' => '::addRemoveCallback',
      'wrapper' => 'value-wrapper',
    ],
  ];

  // If there is more than one name, add the remove button.
  if ($number_of_values > 1) {
    $form['value_wrapper']['actions']['remove_one_value'] = [
      '#type' => 'submit',
      '#value' => $this
        ->t('Remove a value'),
      '#submit' => [
        '::removeOneValue',
      ],
      '#ajax' => [
        'callback' => '::addRemoveCallback',
        'wrapper' => 'value-wrapper',
      ],
    ];
  }
}