/** * Sets "regions" variable for later use in FormHelper. * * This variable is used to properly fill inputs in the "Theme Region" * section of the add/edit form. * * @param null|\Block\Model\Entity\Block $block If a block entity is provided it * will be used to guess which regions has been already selected in each theme, * so we can properly show the selectbox in the form with the corrects * options selected. * @return void */ protected function _setRegions($block = null) { $regions = plugin()->filter(function ($plugin) { return $plugin->isTheme; })->map(function ($theme) use($block) { $value = ''; if ($block !== null && $block->has('region')) { foreach ($block->region as $blockRegion) { if ($blockRegion->theme == $theme->name) { $value = $blockRegion->region; break; } } } return ['theme_machine_name' => $theme->name, 'theme_human_name' => $theme->humanName, 'description' => $theme->composer['description'], 'regions' => (array) $theme->composer['extra']['regions'], 'value' => $value]; }); $this->set('regions', $regions); }