function ViewsForm::buildForm

Same name in other branches
  1. 8.9.x core/modules/views/src/Form/ViewsForm.php \Drupal\views\Form\ViewsForm::buildForm()
  2. 10 core/modules/views/src/Form/ViewsForm.php \Drupal\views\Form\ViewsForm::buildForm()
  3. 11.x core/modules/views/src/Form/ViewsForm.php \Drupal\views\Form\ViewsForm::buildForm()

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');
    // Views forms without view arguments return the same Base Form ID and
    // Form ID. Base form ID should only be added when different.
    if ($this->getBaseFormId() !== $this->getFormId()) {
        $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;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.