LayoutInfoController.php

Same filename in other branches
  1. 4.x src/Controller/LayoutInfoController.php
  2. 5.x src/Controller/LayoutInfoController.php

Namespace

Drupal\devel\Controller

File

src/Controller/LayoutInfoController.php

View source
<?php

namespace Drupal\devel\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Layout\LayoutPluginManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Returns response for Layout Info route.
 */
class LayoutInfoController extends ControllerBase {
    
    /**
     * The Layout Plugin Manager.
     *
     * @var Drupal\Core\Layout\LayoutPluginManagerInterface
     */
    protected $layoutPluginManager;
    
    /**
     * LayoutInfoController constructor.
     *
     * @param \Drupal\Core\Layout\LayoutPluginManagerInterface $pluginManagerLayout
     *   The layout manager.
     */
    public function __construct(LayoutPluginManagerInterface $pluginManagerLayout) {
        $this->layoutPluginManager = $pluginManagerLayout;
    }
    
    /**
     * {@inheritdoc}
     */
    public static function create(ContainerInterface $container) {
        return new static($container->get('plugin.manager.core.layout'));
    }
    
    /**
     * Builds the Layout Info page.
     *
     * @return array
     *   Array of page elements to render.
     */
    public function layoutInfoPage() {
        $definedLayouts = [];
        $layouts = $this->layoutPluginManager
            ->getDefinitions();
        foreach ($layouts as $layout) {
            // @todo Revisit once https://www.drupal.org/node/2660124 gets in, getting
            // the image should be as simple as $layout->getIcon().
            $image = NULL;
            if ($layout->getIconPath() != NULL) {
                $image = [
                    'data' => [
                        '#theme' => 'image',
                        '#uri' => $layout->getIconPath(),
                        '#alt' => $layout->getLabel(),
                        '#height' => '65',
                    ],
                ];
            }
            $definedLayouts[] = [
                $image,
                $layout->getLabel(),
                $layout->getDescription(),
                $layout->getCategory(),
                implode(', ', $layout->getRegionLabels()),
                $layout->getProvider(),
            ];
        }
        return [
            '#theme' => 'table',
            '#header' => [
                $this->t('Icon'),
                $this->t('Label'),
                $this->t('Description'),
                $this->t('Category'),
                $this->t('Regions'),
                $this->t('Provider'),
            ],
            '#rows' => $definedLayouts,
            '#empty' => $this->t('No layouts available.'),
            '#attributes' => [
                'class' => [
                    'devel-layout-list',
                ],
            ],
        ];
    }

}

Classes

Title Deprecated Summary
LayoutInfoController Returns response for Layout Info route.