trait BlockCreationTrait
Same name in other branches
- 8.9.x core/modules/simpletest/src/BlockCreationTrait.php \Drupal\simpletest\BlockCreationTrait
- 8.9.x core/modules/block/tests/src/Traits/BlockCreationTrait.php \Drupal\Tests\block\Traits\BlockCreationTrait
- 10 core/modules/block/tests/src/Traits/BlockCreationTrait.php \Drupal\Tests\block\Traits\BlockCreationTrait
- 11.x core/modules/block/tests/src/Traits/BlockCreationTrait.php \Drupal\Tests\block\Traits\BlockCreationTrait
Provides methods to create and place block with default settings.
This trait is meant to be used only by test classes.
Hierarchy
- trait \Drupal\Tests\block\Traits\BlockCreationTrait
10 files declare their use of BlockCreationTrait
- AreaEntityTest.php in core/
modules/ views/ tests/ src/ Kernel/ Handler/ AreaEntityTest.php - AreaOrderTest.php in core/
modules/ views/ tests/ src/ Kernel/ Handler/ AreaOrderTest.php - BlockContentDeletionTest.php in core/
modules/ block_content/ tests/ src/ Kernel/ BlockContentDeletionTest.php - BlockRebuildTest.php in core/
modules/ block/ tests/ src/ Kernel/ BlockRebuildTest.php - Breadcrumb404Test.php in core/
tests/ Drupal/ FunctionalTests/ Breadcrumb/ Breadcrumb404Test.php
File
-
core/
modules/ block/ tests/ src/ Traits/ BlockCreationTrait.php, line 12
Namespace
Drupal\Tests\block\TraitsView source
trait BlockCreationTrait {
/**
* Creates a block instance based on default settings.
*
* @param string $plugin_id
* The plugin ID of the block type for this block instance.
* @param 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:
* @code
* $this->drupalPlaceBlock('system_powered_by_block', array(
* 'label' => t('Hello, world!'),
* ));
* @endcode
* The following defaults are provided:
* - label: Random string.
* - id: Random string.
* - region: 'sidebar_first'.
* - theme: The default theme.
* - visibility: Empty array.
*
* @return \Drupal\block\Entity\Block
* The block entity.
*
* @todo
* Add support for creating custom block instances.
*/
protected function placeBlock($plugin_id, array $settings = []) {
$config = \Drupal::configFactory();
$settings += [
'plugin' => $plugin_id,
'region' => 'content',
'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;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
BlockCreationTrait::placeBlock | protected | function | Creates a block instance based on default settings. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.