EntityFormBuilder.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace Drupal\Core\Entity;
  3. use Drupal\Core\Form\FormBuilderInterface;
  4. use Drupal\Core\Form\FormState;
  5. /**
  6. * Builds entity forms.
  7. */
  8. class EntityFormBuilder implements EntityFormBuilderInterface {
  9. /**
  10. * The entity manager.
  11. *
  12. * @var \Drupal\Core\Entity\EntityManagerInterface
  13. */
  14. protected $entityManager;
  15. /**
  16. * The form builder.
  17. *
  18. * @var \Drupal\Core\Form\FormBuilderInterface
  19. */
  20. protected $formBuilder;
  21. /**
  22. * Constructs a new EntityFormBuilder.
  23. *
  24. * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
  25. * The entity manager.
  26. * @param \Drupal\Core\Form\FormBuilderInterface $form_builder
  27. * The form builder.
  28. */
  29. public function __construct(EntityManagerInterface $entity_manager, FormBuilderInterface $form_builder) {
  30. $this->entityManager = $entity_manager;
  31. $this->formBuilder = $form_builder;
  32. }
  33. /**
  34. * {@inheritdoc}
  35. */
  36. public function getForm(EntityInterface $entity, $operation = 'default', array $form_state_additions = []) {
  37. $form_object = $this->entityManager->getFormObject($entity->getEntityTypeId(), $operation);
  38. $form_object->setEntity($entity);
  39. $form_state = (new FormState())->setFormState($form_state_additions);
  40. return $this->formBuilder->buildForm($form_object, $form_state);
  41. }
  42. }