class SectionComponentStyles in Block Style Plugins 8.2
Adds Layout Builder component styles.
Hierarchy
- class \Drupal\block_style_plugins\EventSubscriber\SectionComponentStyles implements \Symfony\Component\EventDispatcher\EventSubscriberInterface
Expanded class hierarchy of SectionComponentStyles
1 string reference to 'SectionComponentStyles'
1 service uses SectionComponentStyles
File
- src/
EventSubscriber/ SectionComponentStyles.php, line 13
Namespace
Drupal\block_style_plugins\EventSubscriberView source
class SectionComponentStyles implements EventSubscriberInterface {
/**
* The Block Styles Manager.
*
* @var \Drupal\layout_builder\Plugin\BlockStyles\BlockStylesManager
*/
protected $blockStyleManager;
/**
* Creates a SectionComponentStyles object.
*
* @param \Drupal\block_style_plugins\Plugin\BlockStyleManager $blockStyleManager
* The Block Style Manager.
*/
public function __construct(BlockStyleManager $blockStyleManager) {
$this->blockStyleManager = $blockStyleManager;
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() {
$events = [];
// Skip this if the Layout Builder is not installed.
if (class_exists('\\Drupal\\layout_builder\\LayoutBuilderEvents')) {
$events[LayoutBuilderEvents::SECTION_COMPONENT_BUILD_RENDER_ARRAY] = 'onBuildRender';
}
return $events;
}
/**
* Add styles to a section component.
*
* @param \Drupal\layout_builder\Event\SectionComponentBuildRenderArrayEvent $event
* The section component build render array event.
*/
public function onBuildRender(SectionComponentBuildRenderArrayEvent $event) {
$block_styles = $event
->getComponent()
->getThirdPartySettings('block_style_plugins');
if ($block_styles) {
$build = $event
->getBuild();
// Look for all available plugins.
$available_plugins = $this->blockStyleManager
->getBlockDefinitions();
foreach ($block_styles as $plugin_id => $configuration) {
// Only instantiate plugins that are available.
if (array_key_exists($plugin_id, $available_plugins)) {
/** @var \Drupal\block_style_plugins\Plugin\BlockStyleInterface $plugin */
$plugin = $this->blockStyleManager
->createInstance($plugin_id, $configuration);
$build = $plugin
->build($build);
}
}
$event
->setBuild($build);
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
SectionComponentStyles:: |
protected | property | The Block Styles Manager. | |
SectionComponentStyles:: |
public static | function | ||
SectionComponentStyles:: |
public | function | Add styles to a section component. | |
SectionComponentStyles:: |
public | function | Creates a SectionComponentStyles object. |