Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x

HTTPStatusCode.php

Namespace

Drupal\views\Plugin\views\area

File

core/modules/views/src/Plugin/views/area/HTTPStatusCode.php

View source
<?php

namespace Drupal\views\Plugin\views\area;

use Drupal\Core\Form\FormStateInterface;
use Drupal\views\Attribute\ViewsArea;
use Symfony\Component\HttpFoundation\Response;

/**
 * Alter the HTTP response status code used by the view.
 *
 * @ingroup views_area_handlers
 */
class HTTPStatusCode extends AreaPluginBase {
    
    /**
     * {@inheritdoc}
     */
    protected function defineOptions() {
        $options = parent::defineOptions();
        $options['status_code'] = [
            'default' => 200,
        ];
        return $options;
    }
    
    /**
     * {@inheritdoc}
     */
    public function buildOptionsForm(&$form, FormStateInterface $form_state) {
        parent::buildOptionsForm($form, $form_state);
        // Get all possible status codes defined by symfony.
        $options = Response::$statusTexts;
        // Move 403/404/500 to the top.
        $options = [
            '404' => $options['404'],
            '403' => $options['403'],
            '500' => $options['500'],
        ] + $options;
        // Add the HTTP status code, so it's easier for people to find it.
        array_walk($options, function ($title, $code) use (&$options) {
            $options[$code] = $this->t('@code (@title)', [
                '@code' => $code,
                '@title' => $title,
            ]);
        });
        $form['status_code'] = [
            '#title' => $this->t('HTTP status code'),
            '#type' => 'select',
            '#default_value' => $this->options['status_code'],
            '#options' => $options,
        ];
    }
    
    /**
     * {@inheritdoc}
     */
    public function render($empty = FALSE) {
        if (!$empty || !empty($this->options['empty'])) {
            $build['#attached']['http_header'][] = [
                'Status',
                $this->options['status_code'],
            ];
            return $build;
        }
    }

}

Classes

Title Deprecated Summary
HTTPStatusCode Alter the HTTP response status code used by the view.

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal