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' => '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; } }