diff --git a/core/modules/system/tests/modules/form_test/form_test.module b/core/modules/system/tests/modules/form_test/form_test.module index 8b46c83..7a0b48e 100644 --- a/core/modules/system/tests/modules/form_test/form_test.module +++ b/core/modules/system/tests/modules/form_test/form_test.module @@ -277,17 +277,6 @@ function form_test_menu() { 'type' => MENU_CALLBACK, ); - if (module_exists('node')) { - $items['form-test/two-instances-of-same-form'] = array( - 'title' => 'AJAX test with two form instances', - 'page callback' => 'form_test_two_instances', - 'access callback' => 'node_access', - 'access arguments' => array('create', 'page'), - 'file path' => drupal_get_path('module', 'node'), - 'file' => 'node.pages.inc', - 'type' => MENU_CALLBACK, - ); - } $items['form-test/double-form'] = array( 'title' => 'Double form test', 'page callback' => 'form_test_double_form', diff --git a/core/modules/system/tests/modules/form_test/form_test.services.yml b/core/modules/system/tests/modules/form_test/form_test.services.yml index 0201650..e658fca 100644 --- a/core/modules/system/tests/modules/form_test/form_test.services.yml +++ b/core/modules/system/tests/modules/form_test/form_test.services.yml @@ -3,5 +3,6 @@ services: class: Drupal\form_test\FormTestServiceObject form_test.event_subscriber: class: Drupal\form_test\EventSubscriber\FormTestEventSubscriber + arguments: ['@module_handler'] tags: - { name: event_subscriber } diff --git a/core/modules/system/tests/modules/form_test/lib/Drupal/form_test/Controller/FormTestController.php b/core/modules/system/tests/modules/form_test/lib/Drupal/form_test/Controller/FormTestController.php new file mode 100644 index 0000000..9dcb80f --- /dev/null +++ b/core/modules/system/tests/modules/form_test/lib/Drupal/form_test/Controller/FormTestController.php @@ -0,0 +1,38 @@ +currentUser(); + $values = array( + 'uid' => $user->id(), + 'name' => $user->getUsername(), + 'type' => 'page', + 'langcode' => Language::LANGCODE_NOT_SPECIFIED, + ); + $node1 = $this->entityManager()->getStorageController('node')->create($values); + $node2 = clone($node1); + $return['node_form_1'] = $this->entityManager()->getForm($node1); + $return['node_form_2'] = $this->entityManager()->getForm($node2); + return $return; + } + +} diff --git a/core/modules/system/tests/modules/form_test/lib/Drupal/form_test/EventSubscriber/FormTestEventSubscriber.php b/core/modules/system/tests/modules/form_test/lib/Drupal/form_test/EventSubscriber/FormTestEventSubscriber.php index 7769bec..e467d0c 100644 --- a/core/modules/system/tests/modules/form_test/lib/Drupal/form_test/EventSubscriber/FormTestEventSubscriber.php +++ b/core/modules/system/tests/modules/form_test/lib/Drupal/form_test/EventSubscriber/FormTestEventSubscriber.php @@ -7,6 +7,10 @@ namespace Drupal\form_test\EventSubscriber; +use Drupal\Core\Routing\RouteBuildEvent; +use Drupal\Core\Routing\RoutingEvents; +use Drupal\Core\Extension\ModuleHandlerInterface; +use Symfony\Component\Routing\Route; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\KernelEvents; @@ -17,6 +21,21 @@ class FormTestEventSubscriber implements EventSubscriberInterface { /** + * The module handler. + * + * @var \Drupal\Core\Extension\ModuleHandlerInterface + */ + protected $moduleHandler; + + /** + * Constructs a FormTestController object. + */ + public function __construct(ModuleHandlerInterface $moduleHandler) { + $this->moduleHandler = $moduleHandler; + } + + + /** * Adds custom attributes to the request object. * * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event @@ -33,8 +52,26 @@ public function onKernelRequest(GetResponseEvent $event) { */ public static function getSubscribedEvents() { $events[KernelEvents::REQUEST][] = array('onKernelRequest'); + $events[RoutingEvents::DYNAMIC] = 'routes'; return $events; } + /** + * Adds routes for the Form Tests. + */ + public function routes(RouteBuildEvent $event) { + $collection = $event->getRouteCollection(); + $defaults = array(); + + if ($this->moduleHandler->moduleExists('node')) { + $route = new Route( + "form-test/two-instances-of-same-form", + array('_content' => '\Drupal\form_test\Controller\FormTestController::twoFormInstances'), + array('_entity_create_access' => 'node') + ); + $collection->add("form_test.two_instances", $route); + } + } + }