Drupal 8 - Afficher un noeud via le code

Posté le Jeudi 25 octobre 2018 - 09:41

Pour afficher avoir le renderable array d'un noeud dans le code, rien de plus simple via le service entity_type.manager :

  1. $node = Node::load(1);
  2. $node_rederable = \Drupal::service('entity_type.manager')->getViewBuilder('node')->view($node);

Pour utiliser un autre view_mode :

  1. $node = Node::load(1);
  2. $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 :

  1. <?php
  2.  
  3. namespace Drupal\mon_module\Controller;
  4.  
  5. use Drupal\Core\Controller\ControllerBase;
  6. use Drupal\Core\Entity\EntityTypeManager;
  7. use Drupal\node\Entity\Node;
  8. use Symfony\Component\DependencyInjection\ContainerInterface;
  9.  
  10. /**
  11.  * Class PageController.
  12.  */
  13. class PageController extends ControllerBase {
  14.  
  15. /**
  16.   * @var \Drupal\Core\Entity\EntityTypeManager
  17.   */
  18. protected $entityTypeManager;
  19.  
  20. public function __construct(EntityTypeManager $entityTypeManager) {
  21. $this->entityTypeManager = $entityTypeManager;
  22. }
  23.  
  24. public static function create(ContainerInterface $container) {
  25. return new static($container->get('entity_type.manager'));
  26. }
  27.  
  28. public function frontpage() {
  29. $node = Node::load(1);
  30. $page = $this->entityTypeManager->getViewBuilder('node')->view($node, 'embed');
  31.  
  32. return [
  33. 'page' => $page,
  34. ];
  35. }
  36. }

 

 

Ajouter un commentaire

Ne sera pas publié

HTML restreint

  • Balises HTML autorisées : <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.
CAPTCHA
Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...