web-dev-qa-db-fra.com

Comment charger le formulaire de création ou de modification de nœud?

Pour charger le formulaire de connexion, j'utilise le code suivant.

$form = \Drupal::formBuilder()->getForm('Drupal\user\Form\UserLoginForm');

Je souhaite charger le formulaire pour créer ou modifier un nœud. Comment puis-je atteindre cet objectif?

6
Jeff W Petersen

Copie partielle d'une réponse que j'ai donnée ici: Comment modifier $ form_state avant de rendre un formulaire?

Pour obtenir un formulaire d'ajout, vous pouvez avoir à faire quelque chose comme ceci:

$values = array('type' => $node_type);

$node = \Drupal::entityTypeManager()
  ->getStorage('node')
  ->create($values);

$form = \Drupal::entityTypeManager()
  ->getFormObject('node', 'default')
  ->setEntity($node);
return \Drupal::formBuilder()->getForm($form);

Modifier: D'une certaine manière, j'ai manqué que vous ayez dit modifier. Vous faites exactement la même chose alors, sauf que vous ne créez pas de nouveau nœud $, vous chargez celui que vous souhaitez modifier, puis vous l'utilisez.

Comme écrit ici, cela est basé sur le module entityblock_form, donc si vous en avez besoin dans un bloc, vous pouvez également simplement utiliser ce module.

18
Berdir