class TestPrepareLayout
Same name in other branches
- 9 core/modules/layout_builder/tests/modules/layout_builder_element_test/src/EventSubscriber/TestPrepareLayout.php \Drupal\layout_builder_element_test\EventSubscriber\TestPrepareLayout
- 11.x core/modules/layout_builder/tests/modules/layout_builder_element_test/src/EventSubscriber/TestPrepareLayout.php \Drupal\layout_builder_element_test\EventSubscriber\TestPrepareLayout
Provides an event subscriber for testing section storage alteration.
Hierarchy
- class \Drupal\layout_builder_element_test\EventSubscriber\TestPrepareLayout implements \Symfony\Component\EventDispatcher\EventSubscriberInterface uses \Drupal\Core\StringTranslation\StringTranslationTrait
Expanded class hierarchy of TestPrepareLayout
See also
\Drupal\layout_builder\Event\PrepareLayoutEvent
\Drupal\layout_builder\Element\LayoutBuilder::prepareLayout()
1 string reference to 'TestPrepareLayout'
- layout_builder_element_test.services.yml in core/
modules/ layout_builder/ tests/ modules/ layout_builder_element_test/ layout_builder_element_test.services.yml - core/modules/layout_builder/tests/modules/layout_builder_element_test/layout_builder_element_test.services.yml
1 service uses TestPrepareLayout
- layout_builder_element_test.prepare_layout in core/
modules/ layout_builder/ tests/ modules/ layout_builder_element_test/ layout_builder_element_test.services.yml - Drupal\layout_builder_element_test\EventSubscriber\TestPrepareLayout
File
-
core/
modules/ layout_builder/ tests/ modules/ layout_builder_element_test/ src/ EventSubscriber/ TestPrepareLayout.php, line 20
Namespace
Drupal\layout_builder_element_test\EventSubscriberView source
class TestPrepareLayout implements EventSubscriberInterface {
use StringTranslationTrait;
/**
* The layout tempstore repository.
*
* @var \Drupal\layout_builder\LayoutTempstoreRepositoryInterface
*/
protected $layoutTempstoreRepository;
/**
* The messenger service.
*
* @var \Drupal\Core\Messenger\MessengerInterface
*/
protected $messenger;
/**
* Constructs a new TestPrepareLayout.
*
* @param \Drupal\layout_builder\LayoutTempstoreRepositoryInterface $layout_tempstore_repository
* The tempstore repository.
* @param \Drupal\Core\Messenger\MessengerInterface $messenger
* The messenger service.
*/
public function __construct(LayoutTempstoreRepositoryInterface $layout_tempstore_repository, MessengerInterface $messenger) {
$this->layoutTempstoreRepository = $layout_tempstore_repository;
$this->messenger = $messenger;
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() : array {
// Act before core's layout builder subscriber.
$events[LayoutBuilderEvents::PREPARE_LAYOUT][] = [
'onBeforePrepareLayout',
20,
];
// Act after core's layout builder subscriber.
$events[LayoutBuilderEvents::PREPARE_LAYOUT][] = [
'onAfterPrepareLayout',
-10,
];
return $events;
}
/**
* Subscriber to test acting before the LB subscriber.
*
* @param \Drupal\layout_builder\Event\PrepareLayoutEvent $event
* The prepare layout event.
*/
public function onBeforePrepareLayout(PrepareLayoutEvent $event) {
$section_storage = $event->getSectionStorage();
$context = $section_storage->getContextValues();
if (!empty($context['entity'])) {
/** @var \Drupal\Core\Entity\EntityInterface $entity */
$entity = $context['entity'];
// Node 1 or 2: Append a block to the layout.
if (in_array($entity->id(), [
'1',
'2',
])) {
$section = new Section('layout_onecol');
$section->appendComponent(new SectionComponent('fake-uuid', 'content', [
'id' => 'static_block',
'label' => 'Test static block title',
'label_display' => 'visible',
'provider' => 'fake_provider',
]));
$section_storage->appendSection($section);
}
// Node 2: Stop event propagation.
if ($entity->id() === '2') {
$event->stopPropagation();
}
}
}
/**
* Subscriber to test acting after the LB subscriber.
*
* @param \Drupal\layout_builder\Event\PrepareLayoutEvent $event
* The prepare layout event.
*/
public function onAfterPrepareLayout(PrepareLayoutEvent $event) {
$section_storage = $event->getSectionStorage();
$context = $section_storage->getContextValues();
if (!empty($context['entity'])) {
/** @var \Drupal\Core\Entity\EntityInterface $entity */
$entity = $context['entity'];
// Node 1, 2, or 3: Append a block to the layout.
if (in_array($entity->id(), [
'1',
'2',
'3',
])) {
$section = new Section('layout_onecol');
$section->appendComponent(new SectionComponent('fake-uuid', 'content', [
'id' => 'static_block_two',
'label' => 'Test second static block title',
'label_display' => 'visible',
'provider' => 'fake_provider',
]));
$section_storage->appendSection($section);
}
}
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overrides |
---|---|---|---|---|
StringTranslationTrait::$stringTranslation | protected | property | The string translation service. | 3 |
StringTranslationTrait::formatPlural | protected | function | Formats a string containing a count of items. | |
StringTranslationTrait::getNumberOfPlurals | protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait::getStringTranslation | protected | function | Gets the string translation service. | |
StringTranslationTrait::setStringTranslation | public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait::t | protected | function | Translates a string to the current language or to a given language. | |
TestPrepareLayout::$layoutTempstoreRepository | protected | property | The layout tempstore repository. | |
TestPrepareLayout::$messenger | protected | property | The messenger service. | |
TestPrepareLayout::getSubscribedEvents | public static | function | ||
TestPrepareLayout::onAfterPrepareLayout | public | function | Subscriber to test acting after the LB subscriber. | |
TestPrepareLayout::onBeforePrepareLayout | public | function | Subscriber to test acting before the LB subscriber. | |
TestPrepareLayout::__construct | public | function | Constructs a new TestPrepareLayout. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.