public function DynamicLayout::build in Dynamic Layouts 8
Build a render array for layout with regions.
Parameters
array $regions: An associative array keyed by region name, containing render arrays representing the content that should be placed in each region.
Return value
array Render array for the layout with regions.
Overrides LayoutDefault::build
File
- src/
Plugin/ Layout/ DynamicLayout.php, line 58
Class
- DynamicLayout
- Dynamically prepare the dynamic layout build.
Namespace
Drupal\dynamic_layouts\Plugin\LayoutCode
public function build(array $regions) {
// Get the layout config entity type & entity id from the plugin id.
$plugin_id = $this
->getPluginId();
list($entity_type, $entity_id) = explode(':', $plugin_id);
/* @var \Drupal\dynamic_layouts\DynamicLayoutInterface $config_entity */
$rows = [];
if ($config_entity = $this->entityTypeManager
->getStorage($entity_type)
->load($entity_id)) {
$rows = $config_entity
->getRows();
}
// Ensure $build only contains defined regions and in the order defined.
$build = [];
foreach ($this
->getPluginDefinition()
->getRegionNames() as $region_name) {
if (array_key_exists($region_name, $regions)) {
$build[$region_name] = $regions[$region_name];
}
}
$build['#settings'] = $this
->getConfiguration();
$build['#layout'] = $this->pluginDefinition;
$build['#wrapperClasses'] = $this
->getWrapperClasses();
$build['#theme'] = $this->pluginDefinition
->getThemeHook();
if ($library = $this->pluginDefinition
->getLibrary()) {
$build['#attached']['library'][] = $library;
}
if ($this->settings
->getFrontendLibrary() == 'custom') {
$build['#attached']['library'][] = 'dynamic_layouts/dynamic_layouts_frontend';
}
$build['rows'] = [
'#markup' => $rows,
];
return $build;
}