Pour afficher avoir le renderable array d'un noeud dans le code, rien de plus simple via le service entity_type.manager :
$node = Node::load(1);
$node_rederable = \Drupal::service('entity_type.manager')->getViewBuilder('node')->view($node);
Pour utiliser un autre view_mode :
$node = Node::load(1);
$node_rederable = \Drupal::service('entity_type.manager')->getViewBuilder('node')->view($node, 'embed');
Évidement le plus propre et de passer par l'injection de dépendance, voici une version simplifiée de mon contrôleur :
<?php
namespace Drupal\mon_module\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Entity\EntityTypeManager;
use Drupal\node\Entity\Node;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Class PageController.
*/
class PageController extends ControllerBase {
/**
* @var \Drupal\Core\Entity\EntityTypeManager
*/
protected $entityTypeManager;
public function __construct(EntityTypeManager $entityTypeManager) {
$this->entityTypeManager = $entityTypeManager;
}
public static function create(ContainerInterface $container) {
return new static($container->get('entity_type.manager'));
}
public function frontpage() {
$node = Node::load(1);
$page = $this->entityTypeManager->getViewBuilder('node')->view($node, 'embed');
return [
'page' => $page,
];
}
}
Ajouter un commentaire