Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / lib / Drupal / Core / Entity / HtmlEntityFormController.php
1 <?php
2
3 namespace Drupal\Core\Entity;
4
5 use Drupal\Core\Controller\FormController;
6 use Drupal\Core\Form\FormBuilderInterface;
7 use Drupal\Core\Routing\RouteMatchInterface;
8 use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface;
9
10 /**
11  * Wrapping controller for entity forms that serve as the main page body.
12  */
13 class HtmlEntityFormController extends FormController {
14
15   /**
16    * The entity manager service.
17    *
18    * @var \Drupal\Core\Entity\EntityManagerInterface
19    */
20   protected $entityManager;
21
22   /**
23    * Constructs a new \Drupal\Core\Routing\Enhancer\FormEnhancer object.
24    *
25    * @param \Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface $argument_resolver
26    *   The argument resolver.
27    * @param \Drupal\Core\Form\FormBuilderInterface $form_builder
28    *   The form builder.
29    * @param \Drupal\Core\Entity\EntityManagerInterface $manager
30    *   The entity manager.
31    */
32   public function __construct(ArgumentResolverInterface $argument_resolver, FormBuilderInterface $form_builder, EntityManagerInterface $manager) {
33     parent::__construct($argument_resolver, $form_builder);
34     $this->entityManager = $manager;
35   }
36
37   /**
38    * {@inheritdoc}
39    */
40   protected function getFormArgument(RouteMatchInterface $route_match) {
41     return $route_match->getRouteObject()->getDefault('_entity_form');
42   }
43
44   /**
45    * {@inheritdoc}
46    *
47    * Instead of a class name or service ID, $form_arg will be a string
48    * representing the entity and operation being performed.
49    * Consider the following route:
50    * @code
51    *   path: '/foo/{node}/bar'
52    *   defaults:
53    *     _entity_form: 'node.edit'
54    * @endcode
55    * This means that the edit form for the node entity will used.
56    * If the entity type has a default form, only the name of the
57    * entity {param} needs to be passed:
58    * @code
59    *   path: '/foo/{node}/baz'
60    *   defaults:
61    *     _entity_form: 'node'
62    * @endcode
63    */
64   protected function getFormObject(RouteMatchInterface $route_match, $form_arg) {
65     // If no operation is provided, use 'default'.
66     $form_arg .= '.default';
67     list ($entity_type_id, $operation) = explode('.', $form_arg);
68
69     $form_object = $this->entityManager->getFormObject($entity_type_id, $operation);
70
71     // Allow the entity form to determine the entity object from a given route
72     // match.
73     $entity = $form_object->getEntityFromRouteMatch($route_match, $entity_type_id);
74     $form_object->setEntity($entity);
75
76     return $form_object;
77   }
78
79 }