You are here

protected function BlockCreationTrait::placeBlock in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/block/tests/src/Traits/BlockCreationTrait.php \Drupal\Tests\block\Traits\BlockCreationTrait::placeBlock()

Creates a block instance based on default settings.

@todo Add support for creating custom block instances.

Parameters

string $plugin_id: The plugin ID of the block type for this block instance.

array $settings: (optional) An associative array of settings for the block entity. Override the defaults by specifying the key and value in the array, for example:

$this
  ->drupalPlaceBlock('system_powered_by_block', array(
  'label' => t('Hello, world!'),
));

The following defaults are provided:

  • label: Random string.
  • ID: Random string.
  • region: 'sidebar_first'.
  • theme: The default theme.
  • visibility: Empty array.

Return value

\Drupal\block\Entity\Block The block entity.

224 calls to BlockCreationTrait::placeBlock()
AccessDeniedTest::setUp in core/modules/system/tests/src/Functional/System/AccessDeniedTest.php
AccessDeniedTest::testAccessDenied in core/modules/system/tests/src/Functional/System/AccessDeniedTest.php
AccessTestBase::setUp in core/modules/user/tests/src/Functional/Views/AccessTestBase.php
AddFeedTest::setUp in core/modules/aggregator/tests/src/Functional/AddFeedTest.php
AggregatorDisplayConfigurableTest::setUp in core/modules/aggregator/tests/src/Functional/AggregatorDisplayConfigurableTest.php

... See full list

File

core/modules/block/tests/src/Traits/BlockCreationTrait.php, line 41

Class

BlockCreationTrait
Provides methods to create and place block with default settings.

Namespace

Drupal\Tests\block\Traits

Code

protected function placeBlock($plugin_id, array $settings = []) {
  $config = \Drupal::configFactory();
  $settings += [
    'plugin' => $plugin_id,
    'region' => 'sidebar_first',
    'id' => strtolower($this
      ->randomMachineName(8)),
    'theme' => $config
      ->get('system.theme')
      ->get('default'),
    'label' => $this
      ->randomMachineName(8),
    'visibility' => [],
    'weight' => 0,
  ];
  $values = [];
  foreach ([
    'region',
    'id',
    'theme',
    'plugin',
    'weight',
    'visibility',
  ] as $key) {
    $values[$key] = $settings[$key];

    // Remove extra values that do not belong in the settings array.
    unset($settings[$key]);
  }
  foreach ($values['visibility'] as $id => $visibility) {
    $values['visibility'][$id]['id'] = $id;
  }
  $values['settings'] = $settings;
  $block = Block::create($values);
  $block
    ->save();
  return $block;
}