mutual_credit-5.0.x-dev/modules/forms/src/EventSubscriber/RouteSubscriber.php
modules/forms/src/EventSubscriber/RouteSubscriber.php
<?php namespace Drupal\mcapi_forms\EventSubscriber; use Drupal\Core\Routing\RouteSubscriberBase; use Drupal\Core\Routing\RoutingEvents; use Symfony\Component\Routing\RouteCollection; use Symfony\Component\Routing\Route; /** * Subscriber to create a router item for each transaction form display. */ class RouteSubscriber extends RouteSubscriberBase { /** * {@inheritdoc} */ public static function getSubscribedEvents() : array { return [ RoutingEvents::ALTER => [['onAlterRoutes', 0]] ]; } /** * {@inheritdoc} */ protected function alterRoutes(RouteCollection $collection) { // Add a route for each form. foreach (mcapi_form_modes_load() as $mode_name => $display_mode) { $path = $display_mode->getThirdPartySetting('mcapi_forms', 'path'); if (empty($path)) { continue; } $route = new Route($path); $route->setDefaults([ '_entity_form' => 'mcapi_transaction.' . $mode_name ]); $route->setRequirement('_entity_create_access', 'mcapi_transaction'); $dir = $display_mode->getThirdPartySetting('mcapi_forms', 'incoming') ? 'bill' : 'credit'; if ($role = $display_mode->getThirdPartySetting('mcapi_forms', 'role')) { $route->setRequirement('_role', $role); } else { $route->setRequirement('_permission', "create $dir transaction"); } $route->setOptions([ 'parameters' => [ 'entity_form_mode' => [ 'type' => 'mcapi_transaction.'.$mode_name ] ] ]); $collection->add('mcapi.1stparty.' . $mode_name, $route); } } }