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);
    }
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc