EntityFormBuilder.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace Drupal\Core\Entity;
  3. use Drupal\Core\DependencyInjection\DeprecatedServicePropertyTrait;
  4. use Drupal\Core\Form\FormBuilderInterface;
  5. use Drupal\Core\Form\FormState;
  6. /**
  7. * Builds entity forms.
  8. */
  9. class EntityFormBuilder implements EntityFormBuilderInterface {
  10. use DeprecatedServicePropertyTrait;
  11. /**
  12. * {@inheritdoc}
  13. */
  14. protected $deprecatedProperties = ['entityManager' => 'entity.manager'];
  15. /**
  16. * The entity type manager service.
  17. *
  18. * @var \Drupal\Core\Entity\EntityTypeManagerInterface
  19. */
  20. protected $entityTypeManager;
  21. /**
  22. * The form builder.
  23. *
  24. * @var \Drupal\Core\Form\FormBuilderInterface
  25. */
  26. protected $formBuilder;
  27. /**
  28. * Constructs a new EntityFormBuilder.
  29. *
  30. * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
  31. * The entity type manager service.
  32. * @param \Drupal\Core\Form\FormBuilderInterface $form_builder
  33. * The form builder.
  34. */
  35. public function __construct(EntityTypeManagerInterface $entity_type_manager, FormBuilderInterface $form_builder) {
  36. if ($entity_type_manager instanceof EntityManagerInterface) {
  37. @trigger_error('Passing the entity.manager service to EntityFormBuilder::__construct() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. Pass the new dependencies instead. See https://www.drupal.org/node/2549139.', E_USER_DEPRECATED);
  38. $this->entityTypeManager = \Drupal::entityTypeManager();
  39. }
  40. else {
  41. $this->entityTypeManager = $entity_type_manager;
  42. }
  43. $this->formBuilder = $form_builder;
  44. }
  45. /**
  46. * {@inheritdoc}
  47. */
  48. public function getForm(EntityInterface $entity, $operation = 'default', array $form_state_additions = []) {
  49. $form_object = $this->entityTypeManager->getFormObject($entity->getEntityTypeId(), $operation);
  50. $form_object->setEntity($entity);
  51. $form_state = (new FormState())->setFormState($form_state_additions);
  52. return $this->formBuilder->buildForm($form_object, $form_state);
  53. }
  54. }