BatchController.php

Same filename in other branches
  1. 8.9.x core/modules/system/src/Controller/BatchController.php
  2. 10 core/modules/system/src/Controller/BatchController.php
  3. 11.x core/modules/system/src/Controller/BatchController.php

Namespace

Drupal\system\Controller

File

core/modules/system/src/Controller/BatchController.php

View source
<?php

namespace Drupal\system\Controller;

use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;

/**
 * Controller routines for batch routes.
 */
class BatchController implements ContainerInjectionInterface {
    
    /**
     * The app root.
     *
     * @var string
     */
    protected $root;
    
    /**
     * Constructs a new BatchController.
     *
     * @param string $root
     *   The app root.
     */
    public function __construct($root) {
        $this->root = $root;
    }
    
    /**
     * {@inheritdoc}
     */
    public static function create(ContainerInterface $container) {
        return new static($container->getParameter('app.root'));
    }
    
    /**
     * Returns a system batch page.
     *
     * @param \Symfony\Component\HttpFoundation\Request $request
     *   The current request object.
     *
     * @return \Symfony\Component\HttpFoundation\Response|array
     *   A \Symfony\Component\HttpFoundation\Response object or render array.
     *
     * @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException
     */
    public function batchPage(Request $request) {
        require_once $this->root . '/core/includes/batch.inc';
        $output = _batch_page($request);
        if ($output === FALSE) {
            throw new AccessDeniedHttpException();
        }
        elseif ($output instanceof Response) {
            return $output;
        }
        elseif (isset($output)) {
            $title = $output['#title'] ?? NULL;
            $page = [
                '#type' => 'page',
                '#title' => $title,
                '#show_messages' => FALSE,
                'content' => $output,
            ];
            // Also inject title as a page header (if available).
            if ($title) {
                $page['header'] = [
                    '#type' => 'page_title',
                    '#title' => $title,
                ];
            }
            return $page;
        }
    }
    
    /**
     * The _title_callback for the system.batch_page.normal route.
     *
     * @return string
     *   The page title.
     */
    public function batchPageTitle() {
        $current_set = _batch_current_set();
        return !empty($current_set['title']) ? $current_set['title'] : '';
    }

}

Classes

Title Deprecated Summary
BatchController Controller routines for batch routes.

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