function NodePreviewForm::buildForm

Same name in other branches
  1. 9 core/modules/node/src/Form/NodePreviewForm.php \Drupal\node\Form\NodePreviewForm::buildForm()
  2. 8.9.x core/modules/node/src/Form/NodePreviewForm.php \Drupal\node\Form\NodePreviewForm::buildForm()
  3. 11.x core/modules/node/src/Form/NodePreviewForm.php \Drupal\node\Form\NodePreviewForm::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.

\Drupal\Core\Entity\EntityInterface $node: The node being previews

Return value

array The form structure.

Overrides FormInterface::buildForm

File

core/modules/node/src/Form/NodePreviewForm.php, line 77

Class

NodePreviewForm
Contains a form for switching the view mode of a node during preview.

Namespace

Drupal\node\Form

Code

public function buildForm(array $form, FormStateInterface $form_state, ?EntityInterface $node = NULL) {
    $view_mode = $node->preview_view_mode;
    $query_options = [
        'query' => [
            'uuid' => $node->uuid(),
        ],
    ];
    $query = $this->getRequest()->query;
    if ($query->has('destination')) {
        $query_options['query']['destination'] = $query->get('destination');
    }
    $form['backlink'] = [
        '#type' => 'link',
        '#title' => $this->t('Back to content editing'),
        '#url' => $node->isNew() ? Url::fromRoute('node.add', [
            'node_type' => $node->bundle(),
        ]) : $node->toUrl('edit-form'),
        '#options' => [
            'attributes' => [
                'class' => [
                    'node-preview-backlink',
                ],
            ],
        ] + $query_options,
    ];
    // Always show full as an option, even if the display is not enabled.
    $view_mode_options = [
        'full' => $this->t('Full'),
    ] + $this->entityDisplayRepository
        ->getViewModeOptionsByBundle('node', $node->bundle());
    // Unset view modes that are not used in the front end.
    unset($view_mode_options['default']);
    unset($view_mode_options['rss']);
    unset($view_mode_options['search_index']);
    $form['uuid'] = [
        '#type' => 'value',
        '#value' => $node->uuid(),
    ];
    $form['view_mode'] = [
        '#type' => 'select',
        '#title' => $this->t('View mode'),
        '#options' => $view_mode_options,
        '#default_value' => $view_mode,
        '#attributes' => [
            'data-drupal-autosubmit' => TRUE,
        ],
    ];
    $form['submit'] = [
        '#type' => 'submit',
        '#value' => $this->t('Switch'),
        '#attributes' => [
            'class' => [
                'js-hide',
            ],
        ],
    ];
    return $form;
}

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