public function BlockController::demo in Drupal 9
Same name and namespace in other branches
- 8 core/modules/block/src/Controller/BlockController.php \Drupal\block\Controller\BlockController::demo()
- 10 core/modules/block/src/Controller/BlockController.php \Drupal\block\Controller\BlockController::demo()
Returns a block theme demo page.
Parameters
string $theme: The name of the theme.
Return value
array A #type 'page' render array containing the block region demo.
1 string reference to 'BlockController::demo'
- block.routing.yml in core/
modules/ block/ block.routing.yml - core/modules/block/block.routing.yml
File
- core/
modules/ block/ src/ Controller/ BlockController.php, line 69
Class
- BlockController
- Controller routines for admin block routes.
Namespace
Drupal\block\ControllerCode
public function demo($theme) {
if (!$this->themeHandler
->hasUi($theme)) {
throw new NotFoundHttpException();
}
$page = [
'#title' => Html::escape($this->themeHandler
->getName($theme)),
'#type' => 'page',
'#attached' => [
'drupalSettings' => [
// The block demonstration page is not marked as an administrative
// page by \Drupal::service('router.admin_context')->isAdminRoute()
// function in order to use the frontend theme. Since JavaScript
// relies on a proper separation of admin pages, it needs to know this
// is an actual administrative page.
'path' => [
'currentPathIsAdmin' => TRUE,
],
],
'library' => [
'block/drupal.block.admin',
],
],
];
// Show descriptions in each visible page region, nothing else.
$visible_regions = $this
->getVisibleRegionNames($theme);
foreach (array_keys($visible_regions) as $region) {
$page[$region]['block_description'] = [
'#type' => 'inline_template',
'#template' => '<div class="block-region demo-block">{{ region_name }}</div>',
'#context' => [
'region_name' => $visible_regions[$region],
],
];
}
return $page;
}