Chris@0: drupalPlaceBlock('system_powered_by_block', array( Chris@0: * 'label' => t('Hello, world!'), Chris@0: * )); Chris@0: * @endcode Chris@0: * The following defaults are provided: Chris@0: * - label: Random string. Chris@0: * - ID: Random string. Chris@0: * - region: 'sidebar_first'. Chris@0: * - theme: The default theme. Chris@0: * - visibility: Empty array. Chris@0: * Chris@0: * @return \Drupal\block\Entity\Block Chris@0: * The block entity. Chris@0: * Chris@0: * @todo Chris@0: * Add support for creating custom block instances. Chris@0: */ Chris@0: protected function placeBlock($plugin_id, array $settings = []) { Chris@0: $config = \Drupal::configFactory(); Chris@0: $settings += [ Chris@0: 'plugin' => $plugin_id, Chris@0: 'region' => 'sidebar_first', Chris@0: 'id' => strtolower($this->randomMachineName(8)), Chris@0: 'theme' => $config->get('system.theme')->get('default'), Chris@0: 'label' => $this->randomMachineName(8), Chris@0: 'visibility' => [], Chris@0: 'weight' => 0, Chris@0: ]; Chris@0: $values = []; Chris@0: foreach (['region', 'id', 'theme', 'plugin', 'weight', 'visibility'] as $key) { Chris@0: $values[$key] = $settings[$key]; Chris@0: // Remove extra values that do not belong in the settings array. Chris@0: unset($settings[$key]); Chris@0: } Chris@0: foreach ($values['visibility'] as $id => $visibility) { Chris@0: $values['visibility'][$id]['id'] = $id; Chris@0: } Chris@0: $values['settings'] = $settings; Chris@0: $block = Block::create($values); Chris@0: $block->save(); Chris@0: return $block; Chris@0: } Chris@0: Chris@0: }