You are here

public function ViewsForm::buildForm in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/views/src/Form/ViewsForm.php \Drupal\views\Form\ViewsForm::buildForm()

Form constructor.

Parameters

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

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

Return value

array The form structure.

Overrides FormInterface::buildForm

File

core/modules/views/src/Form/ViewsForm.php, line 144

Class

ViewsForm
Provides a base class for single- or multistep view forms.

Namespace

Drupal\views\Form

Code

public function buildForm(array $form, FormStateInterface $form_state, ViewExecutable $view = NULL, $output = []) {
  if (!($step = $form_state
    ->get('step'))) {
    $step = 'views_form_views_form';
    $form_state
      ->set('step', $step);
  }
  $form_state
    ->set([
    'step_controller',
    'views_form_views_form',
  ], 'Drupal\\views\\Form\\ViewsFormMainForm');

  // Add the base form ID.
  $form_state
    ->addBuildInfo('base_form_id', $this
    ->getBaseFormId());
  $form = [];
  $query = $this->requestStack
    ->getCurrentRequest()->query
    ->all();
  $query = UrlHelper::filterQueryParameters($query, [], '');
  $options = [
    'query' => $query,
  ];
  $form['#action'] = $view
    ->hasUrl() ? $view
    ->getUrl()
    ->setOptions($options)
    ->toString() : Url::fromRoute('<current>')
    ->setOptions($options)
    ->toString();

  // Tell the preprocessor whether it should hide the header, footer, pager,
  // etc.
  $form['show_view_elements'] = [
    '#type' => 'value',
    '#value' => $step == 'views_form_views_form' ? TRUE : FALSE,
  ];
  $form_object = $this
    ->getFormObject($form_state);
  $form += $form_object
    ->buildForm($form, $form_state, $view, $output);
  return $form;
}