use Drupal\Core\Entity\Entity\EntityViewDisplay;
use Drupal\Core\Entity\EntityViewBuilder;
+use Drupal\Core\Render\Element;
/**
* Render controller for paragraphs.
$build_list = parent::buildMultiple($build_list);
// Allow enabled behavior plugin to alter the rendering.
- foreach ($build_list as $key => $value) {
- $display = EntityViewDisplay::load('paragraph.' . $value['#paragraph']->bundle() . '.' . $value['#view_mode']) ?: EntityViewDisplay::load('paragraph.' . $value['#paragraph']->bundle() . '.default');
- $paragraph_type = $value['#paragraph']->getParagraphType();
+ foreach (Element::children($build_list) as $key) {
+ $build = $build_list[$key];
+ $display = EntityViewDisplay::load('paragraph.' . $build['#paragraph']->bundle() . '.' . $build['#view_mode']) ?: EntityViewDisplay::load('paragraph.' . $build['#paragraph']->bundle() . '.default');
+ $paragraph_type = $build['#paragraph']->getParagraphType();
+
+ // In case we use paragraphs type with no fields the EntityViewDisplay
+ // might not be available yet.
+ if (!$display) {
+ $display = EntityViewDisplay::create([
+ 'targetEntityType' => 'paragraph',
+ 'bundle' => $build['#paragraph']->bundle(),
+ 'mode' => 'default',
+ 'status' => TRUE,
+ ]);
+ }
+
foreach ($paragraph_type->getEnabledBehaviorPlugins() as $plugin_id => $plugin_value) {
- $plugin_value->view($build_list[$key], $value['#paragraph'], $display, $value['#view_mode']);
+ $plugin_value->view($build_list[$key], $build['#paragraph'], $display, $build['#view_mode']);
}
}
return $build_list;