ModalRenderer.php

Same filename in other branches
  1. 8.9.x core/lib/Drupal/Core/Render/MainContent/ModalRenderer.php
  2. 10 core/lib/Drupal/Core/Render/MainContent/ModalRenderer.php
  3. 11.x core/lib/Drupal/Core/Render/MainContent/ModalRenderer.php

Namespace

Drupal\Core\Render\MainContent

File

core/lib/Drupal/Core/Render/MainContent/ModalRenderer.php

View source
<?php

namespace Drupal\Core\Render\MainContent;

use Drupal\Core\Ajax\AjaxResponse;
use Drupal\Core\Ajax\OpenModalDialogCommand;
use Drupal\Core\Routing\RouteMatchInterface;
use Symfony\Component\HttpFoundation\Request;

/**
 * Default main content renderer for modal dialog requests.
 */
class ModalRenderer extends DialogRenderer {
    
    /**
     * {@inheritdoc}
     */
    public function renderResponse(array $main_content, Request $request, RouteMatchInterface $route_match) {
        $response = new AjaxResponse();
        // First render the main content, because it might provide a title.
        $content = $this->renderer
            ->renderRoot($main_content);
        // Attach the library necessary for using the OpenModalDialogCommand and set
        // the attachments for this Ajax response.
        $main_content['#attached']['library'][] = 'core/drupal.dialog.ajax';
        $response->setAttachments($main_content['#attached']);
        // If the main content doesn't provide a title, use the title resolver.
        $title = $main_content['#title'] ?? $this->titleResolver
            ->getTitle($request, $route_match->getRouteObject());
        // Determine the title: use the title provided by the main content if any,
        // otherwise get it from the routing information.
        $options = $request->request
            ->get('dialogOptions', []);
        $response->addCommand(new OpenModalDialogCommand($title, $content, $options));
        return $response;
    }

}

Classes

Title Deprecated Summary
ModalRenderer Default main content renderer for modal dialog requests.

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