class SectionStyles in Block Style Plugins 8.2
Adds Layout Builder section styles.
@todo This currently does nothing and is waiting on https://www.drupal.org/project/drupal/issues/3062862.
Hierarchy
- class \Drupal\block_style_plugins\EventSubscriber\SectionStyles implements \Symfony\Component\EventDispatcher\EventSubscriberInterface
Expanded class hierarchy of SectionStyles
File
- src/
EventSubscriber/ SectionStyles.php, line 16
Namespace
Drupal\block_style_plugins\EventSubscriberView source
class SectionStyles implements EventSubscriberInterface {
/**
* The Block Styles Manager.
*
* @var \Drupal\block_style_plugins\Plugin\BlockStyleManager
*/
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_BUILD_RENDER_ARRAY] = 'onBuildRender';
}
return $events;
}
/**
* Add styles to a section component.
*
* @param \Drupal\layout_builder\Event\SectionBuildRenderArrayEvent $event
* The section build render array event.
*/
public function onBuildRender(SectionBuildRenderArrayEvent $event) {
$block_styles = $event
->getSection()
->getThirdPartySettings('block_style_plugins');
if ($block_styles) {
$build = $event
->getBuild();
// Look for all available plugins.
$available_plugins = $this->blockStyleManager
->getSectionDefinitions();
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 |
---|---|---|---|---|
SectionStyles:: |
protected | property | The Block Styles Manager. | |
SectionStyles:: |
public static | function | ||
SectionStyles:: |
public | function | Add styles to a section component. | |
SectionStyles:: |
public | function | Creates a SectionComponentStyles object. |