Ada dua jenis blok, dan metode untuk merender keduanya agak berbeda:
Blok Konten
Blok konten adalah blok yang Anda buat di antarmuka. Mereka seperti struktur data yang dapat dikonfigurasi node, dengan bidang, dll. Jika Anda ingin merender salah satunya, Anda dapat melakukan apa yang biasanya Anda lakukan dengan entitas, memuatnya dan merendernya dengan pembuat tampilan:
$bid = ??? // Get the block id through config, SQL or some other means
$block = \Drupal\block_content\Entity\BlockContent::load($bid);
$render = \Drupal::entityTypeManager()->
getViewBuilder('block_content')->view($block);
return $render;
Blok plugin
Blok juga bisa berupa plugin, didefinisikan dalam berbagai modul. Contohnya bisa menjadi blok remah roti. Jika Anda ingin merendernya, Anda harus menggunakan blok plugin manager.
$block_manager = \Drupal::service('plugin.manager.block');
// You can hard code configuration or you load from settings.
$config = [];
$plugin_block = $block_manager->createInstance('system_breadcrumb_block', $config);
// Some blocks might implement access check.
$access_result = $plugin_block->access(\Drupal::currentUser());
// Return empty render array if user doesn't have access.
// $access_result can be boolean or an AccessResult class
if (is_object($access_result) && $access_result->isForbidden() || is_bool($access_result) && !$access_result) {
// You might need to add some cache tags/contexts.
return [];
}
$render = $plugin_block->build();
// In some cases, you need to add the cache tags/context depending on
// the block implemention. As it's possible to add the cache tags and
// contexts in the render method and in ::getCacheTags and
// ::getCacheContexts methods.
return $render;
Entitas konfigurasi
Dibagi untuk dua jenis adalah blok, adalah bahwa begitu Anda memasukkannya ke suatu wilayah, Anda akan membuat entitas konfigurasi yang memiliki semua pengaturan untuk blok. Dalam beberapa kasus akan lebih berguna menangani entitas konfigurasi. Karena blok yang sama dapat ditempatkan di beberapa wilayah dengan dan dengan konfigurasi yang berbeda, itu bisa menjadi lebih rumit menggunakan entitas konfigurasi blok. Yang menyenangkan adalah Anda mungkin ingin membuat blok dengan konfigurasi tertentu, yang buruk adalah bahwa konfigurasi bisa berubah dengan mengacaukan antarmuka, sehingga kode mungkin berakhir tidak berfungsi setelah membiarkan pengguna menggunakan antarmuka blok.
$block = \Drupal\block\Entity\Block::load('config.id');
$render = \Drupal::entityTypeManager()
->getViewBuilder('block')
->view($block);
return $render;