Получить строчку из таблицы config
//например конфиг block.block.bartik_tools
//вытянет всё
$conf = \Drupal::config('block.block.bartik_tools')->get();
//покажет только элемент 'region'
$conf = \Drupal::config('block.block.bartik_tools')->get('region');
//посмотреть
kint($conf);
Программный вывод блока
//id блока. Например system_powered_by_block,shortcuts или search_form_block
$bid = 'system_powered_by_block';
$block_manager = \Drupal::service('plugin.manager.block');
$plugin_block = $block_manager->createInstance($bid, $config);
$render = $plugin_block->build();
$render = \Drupal::service('renderer')->render($render, FALSE);//отрендеренная вёрстка
$block = [
'#type' => 'markup',
'#markup' => $render,
];
return $block;
Передать в markup блока вёрстку:
//не забываем
use Drupal\Component\Render\FormattableMarkup;
//Далее в классе
public function build() {
$fm = new FormattableMarkup('<div style="@style">' . $my_html . '</div>', ['@style' => 'border: 1px solid black;']);
$block = [
'#type' => 'markup',
'#markup' => $fm,
];
return $block;
}
//стиль передавать именно через @, а не через :
Если нужно не возвращать из контроллера массив, который будет отрендерен, а отрендерить его ещё в контроллере - то можно сделать это так.
$return = [
'#theme' => 'geo_fields_popup',
'#articles' => $variable,
];
$html = theme_render_and_autoescape($return);