Example #1
0
 /**
  * {@inheritdoc}
  */
 public function processOutbound($route_name, Route $route, array &$parameters, BubbleableMetadata $bubbleable_metadata = NULL)
 {
     if ($route_name === '<current>') {
         if ($current_route = $this->routeMatch->getRouteObject()) {
             $requirements = $current_route->getRequirements();
             // Setting _method and _schema is deprecated since 2.7. Using
             // setMethods() and setSchemes() are now the recommended ways.
             unset($requirements['_method']);
             unset($requirements['_schema']);
             $route->setRequirements($requirements);
             $route->setPath($current_route->getPath());
             $route->setSchemes($current_route->getSchemes());
             $route->setMethods($current_route->getMethods());
             $route->setOptions($current_route->getOptions());
             $route->setDefaults($current_route->getDefaults());
             $parameters = array_merge($parameters, $this->routeMatch->getRawParameters()->all());
             if ($bubbleable_metadata) {
                 $bubbleable_metadata->addCacheContexts(['route']);
             }
         } else {
             // If we have no current route match available, point to the frontpage.
             $route->setPath('/');
         }
     }
 }
Example #2
0
 public function addCollection($path, array $data = array())
 {
     $route = new Route($path);
     //        $pageClass = ($entity->getResource()->getPageClass()) ? $entity->getResource()->getPageClass() : $entity->getResource()->getPageClass();
     $route->setDefaults($data);
     return $route;
 }
Example #3
0
 public function testDefaults()
 {
     $route = new Route('/:foo');
     $route->setDefaults(array('foo' => 'bar'));
     $this->assertEquals(array('foo' => 'bar'), $route->getDefaults(), '->setDefaults() sets the defaults');
     $this->assertEquals($route, $route->setDefaults(array()), '->setDefaults() implements a fluent interface');
 }
 /**
  * Gets the moderation-form route.
  *
  * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
  *   The entity type.
  *
  * @return \Symfony\Component\Routing\Route|null
  *   The generated route, if available.
  */
 protected function getModerationFormRoute(EntityTypeInterface $entity_type)
 {
     if ($entity_type->hasLinkTemplate('moderation-form') && $entity_type->getFormClass('moderation')) {
         $entity_type_id = $entity_type->id();
         $route = new Route($entity_type->getLinkTemplate('moderation-form'));
         $route->setDefaults(['_entity_form' => "{$entity_type_id}.moderation", '_title' => 'Moderation'])->setRequirement('_permission', 'administer moderation states')->setOption('parameters', [$entity_type_id => ['type' => 'entity:' . $entity_type_id]]);
         return $route;
     }
 }
 /**
  * {@inheritdoc}
  */
 public function processOutbound($route_name, Route $route, array &$parameters)
 {
     if ($route_name === '<current>' && ($current_route = $this->routeMatch->getRouteObject())) {
         $route->setPath($current_route->getPath());
         $route->setRequirements($current_route->getRequirements());
         $route->setOptions($current_route->getOptions());
         $route->setDefaults($current_route->getDefaults());
         $parameters = array_merge($parameters, $this->routeMatch->getRawParameters()->all());
     }
 }
 /**
  * @covers Symfony\Component\Routing\Route::setDefaults
  * @covers Symfony\Component\Routing\Route::getDefaults
  * @covers Symfony\Component\Routing\Route::setDefault
  * @covers Symfony\Component\Routing\Route::getDefault
  */
 public function testDefaults()
 {
     $route = new Route('/{foo}');
     $route->setDefaults(array('foo' => 'bar'));
     $this->assertEquals(array('foo' => 'bar'), $route->getDefaults(), '->setDefaults() sets the defaults');
     $this->assertEquals($route, $route->setDefaults(array()), '->setDefaults() implements a fluent interface');
     $route->setDefault('foo', 'bar');
     $this->assertEquals('bar', $route->getDefault('foo'), '->setDefault() sets a default value');
     $route->setDefault('foo2', 'bar2');
     $this->assertEquals('bar2', $route->getDefault('foo2'), '->getDefault() return the default value');
     $this->assertNull($route->getDefault('not_defined'), '->getDefault() return null if default value is not setted');
 }
 /**
  * Gets the edit-form route.
  *
  * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
  *   The entity type.
  *
  * @return \Symfony\Component\Routing\Route|null
  *   The generated route, if available.
  */
 protected function getEditFormRoute(EntityTypeInterface $entity_type)
 {
     if ($entity_type->hasLinkTemplate('edit-form')) {
         $entity_type_id = $entity_type->id();
         $route = new Route($entity_type->getLinkTemplate('edit-form'));
         // Use the edit form handler, if available, otherwise default.
         $operation = 'default';
         if ($entity_type->getFormClass('edit')) {
             $operation = 'edit';
         }
         $route->setDefaults(['_entity_form' => "{$entity_type_id}.{$operation}", '_title_callback' => '\\Drupal\\Core\\Entity\\Controller\\EntityController::editTitle'])->setRequirement('_entity_access', "{$entity_type_id}.update")->setOption('parameters', [$entity_type_id => ['type' => 'entity:' . $entity_type_id]]);
         return $route;
     }
 }
 /**
  * Gets the add-form route.
  *
  * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
  *   The entity type.
  *
  * @return \Symfony\Component\Routing\Route|null
  *   The generated route, if available.
  */
 protected function getAddFormRoute(EntityTypeInterface $entity_type)
 {
     if ($entity_type->hasLinkTemplate('add-form')) {
         $entity_type_id = $entity_type->id();
         $route = new Route($entity_type->getLinkTemplate('add-form'));
         // Use the add form handler, if available, otherwise default.
         $operation = 'default';
         if ($entity_type->getFormClass('add')) {
             $operation = 'add';
         }
         $route->setDefaults(['_entity_form' => "{$entity_type_id}.{$operation}", '_title' => "Add {$entity_type->getLabel()}"])->setRequirement('_entity_create_access', $entity_type_id)->setOption('parameters', [$entity_type_id => ['type' => 'entity:' . $entity_type_id]])->setOption('_admin_route', TRUE);
         return $route;
     }
 }
 /**
  * {@inheritdoc}
  */
 public function processOutbound($route_name, Route $route, array &$parameters)
 {
     if ($route_name === '<current>') {
         if ($current_route = $this->routeMatch->getRouteObject()) {
             $route->setPath($current_route->getPath());
             $route->setRequirements($current_route->getRequirements());
             $route->setOptions($current_route->getOptions());
             $route->setDefaults($current_route->getDefaults());
             $parameters = array_merge($parameters, $this->routeMatch->getRawParameters()->all());
         } else {
             // If we have no current route match available, point to the frontpage.
             $route->setPath('/');
         }
     }
 }
Example #10
0
 /**
  * @param RouteCollection $collection
  * @param string $name
  * @param array $config
  * @param string $path
  */
 protected function parseRoute(RouteCollection $collection, $name, array $config, $path)
 {
     $defaults = isset($config['defaults']) ? $config['defaults'] : array();
     $requirements = isset($config['requirements']) ? $config['requirements'] : array();
     $options = isset($config['options']) ? $config['options'] : array();
     $host = isset($config['host']) ? $config['host'] : '';
     $schemes = isset($config['schemes']) ? $config['schemes'] : array();
     $methods = isset($config['methods']) ? $config['methods'] : array();
     $i18n = isset($config['i18n']) ? $config['i18n'] : true;
     foreach ($this->registry->getRegisteredLocales() as $locale) {
         $route = new Route($config['path'], $defaults, $requirements, $options, $host, $schemes, $methods);
         if ($i18n) {
             $route->setPath('/' . $locale . '/' . ltrim($this->helper->alterPath($config['path'], $locale), '/'));
             $route->setDefaults($this->helper->alterDefaults($defaults, $locale));
         }
         $i18nName = $i18n ? $this->helper->alterName($name, $locale) : $name;
         $collection->add($i18nName, $route);
     }
 }
Example #11
0
 public function testDefaults()
 {
     $route = new Route('/{foo}');
     $route->setDefaults(array('foo' => 'bar'));
     $this->assertEquals(array('foo' => 'bar'), $route->getDefaults(), '->setDefaults() sets the defaults');
     $this->assertEquals($route, $route->setDefaults(array()), '->setDefaults() implements a fluent interface');
     $route->setDefault('foo', 'bar');
     $this->assertEquals('bar', $route->getDefault('foo'), '->setDefault() sets a default value');
     $route->setDefault('foo2', 'bar2');
     $this->assertEquals('bar2', $route->getDefault('foo2'), '->getDefault() return the default value');
     $this->assertNull($route->getDefault('not_defined'), '->getDefault() return null if default value is not set');
     $route->setDefault('_controller', $closure = function () {
         return 'Hello';
     });
     $this->assertEquals($closure, $route->getDefault('_controller'), '->setDefault() sets a default value');
     $route->setDefaults(array('foo' => 'foo'));
     $route->addDefaults(array('bar' => 'bar'));
     $this->assertEquals($route, $route->addDefaults(array()), '->addDefaults() implements a fluent interface');
     $this->assertEquals(array('foo' => 'foo', 'bar' => 'bar'), $route->getDefaults(), '->addDefaults() keep previous defaults');
 }
 public function providerTestGetAddPageRoute()
 {
     $data = [];
     $entity_type1 = $this->getEntityType();
     $entity_type1->hasLinkTemplate('add-page')->willReturn(FALSE);
     $data['no_add_page_link_template'] = [NULL, $entity_type1->reveal()];
     $entity_type2 = $this->getEntityType();
     $entity_type2->hasLinkTemplate('add-page')->willReturn(TRUE);
     $entity_type2->getKey('bundle')->willReturn(NULL);
     $data['no_bundle'] = [NULL, $entity_type2->reveal()];
     $entity_type3 = $this->getEntityType();
     $entity_type3->hasLinkTemplate('add-page')->willReturn(TRUE);
     $entity_type3->getLinkTemplate('add-page')->willReturn('/the/add/page/link/template');
     $entity_type3->id()->willReturn('the_entity_type_id');
     $entity_type3->getKey('bundle')->willReturn('type');
     $route = new Route('/the/add/page/link/template');
     $route->setDefaults(['_controller' => 'Drupal\\Core\\Entity\\Controller\\EntityController::addPage', '_title_callback' => 'Drupal\\Core\\Entity\\Controller\\EntityController::addTitle', 'entity_type_id' => 'the_entity_type_id']);
     $route->setRequirement('_entity_create_any_access', 'the_entity_type_id');
     $data['add_page'] = [clone $route, $entity_type3->reveal()];
     return $data;
 }
Example #13
0
 private function createRoute($path, array $globals, array $options = [])
 {
     foreach ($globals as $k => $v) {
         if (is_array($v) && isset($options[$k])) {
             $options[$k] = array_merge($v, $options[$k]);
         } else {
             $options[$k] = isset($options[$k]) ? $options[$k] : $v;
         }
     }
     $route = new Route($path);
     if (isset($options['host'])) {
         $route->setHost($options['host']);
     }
     if (isset($options['defaults'])) {
         $route->setDefaults($options['defaults']);
     }
     if (isset($options['requirements'])) {
         $route->setRequirements($options['requirements']);
     }
     if (isset($options['methods'])) {
         $route->setMethods($options['methods']);
     }
     return $route;
 }
Example #14
0
 /**
  * @param array $options
  *
  * @return Route[]
  */
 protected function indexRoute(array $options)
 {
     $routes = [];
     if ($options['index_pagination'] || $options['index_sort']) {
         $path = '/index';
         $defaults = [];
         $requirements = [];
         $sortParams = $this->indexSortParams($options['index_sort_params']);
         if ($options['index_pagination']) {
             $path .= '/{page}';
             $defaults['page'] = '1';
             $requirements['page'] = '\\d+';
         }
         if ($options['index_sort']) {
             $path .= '/{sort}/{direction}';
         }
         $route = new Route($path);
         $route->setMethods(['GET']);
         $route->setRequirements($requirements);
         $route->setDefaults($defaults);
         $route->setDefault('_controller', $options['controller'] . ':index');
         $this->addSortDefaults($route, $sortParams);
         $routes['index'] = $route;
         $root = new Route('/');
         $root->setMethods(['GET']);
         $root->setDefault('_controller', 'FrameworkBundle:Redirect:redirect');
         $root->setDefault('route', $this->routePrefix($options['route_prefix']) . '_index');
         $root->setDefault('_locale', null);
         $routes['root'] = $root;
     } else {
         $route = new Route('/');
         $route->setMethods(['GET']);
         $route->setDefault('_controller', $options['controller'] . ':index');
         $routes['index'] = $route;
     }
     return $routes;
 }
 /**
  * @param mixed[] $entry
  *
  * @return Route
  */
 protected function createRoute($entry)
 {
     $route = new Route(getArrayElement('searchPath', $entry));
     $route->setDefaults($this->getDynamicRouteDefaults($entry));
     $this->assignRouteValue('host', $entry, $route);
     $this->assignRouteValue('methods', $entry, $route);
     $this->assignRouteValue('requirements', $entry, $route);
     $this->assignRouteValue('schemas', $entry, $route);
     return $route;
 }
Example #16
0
 /**
  * Gets the edit-form route.
  *
  * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
  *   The entity type.
  *
  * @return \Symfony\Component\Routing\Route|null
  *   The generated route, if available.
  */
 protected function getEditFormRoute(EntityTypeInterface $entity_type)
 {
     if ($entity_type->hasLinkTemplate('edit-form')) {
         $entity_type_id = $entity_type->id();
         $route = new Route($entity_type->getLinkTemplate('edit-form'));
         // Use the edit form handler, if available, otherwise default.
         $operation = 'default';
         if ($entity_type->getFormClass('edit')) {
             $operation = 'edit';
         }
         $route->setDefaults(['_entity_form' => "{$entity_type_id}.{$operation}", '_title_callback' => '\\Drupal\\Core\\Entity\\Controller\\EntityController::editTitle'])->setRequirement('_entity_access', "{$entity_type_id}.update")->setOption('parameters', [$entity_type_id => ['type' => 'entity:' . $entity_type_id]]);
         // Entity types with serial IDs can specify this in their route
         // requirements, improving the matching process.
         if ($this->getEntityTypeIdKeyType($entity_type) === 'integer') {
             $route->setRequirement($entity_type_id, '\\d+');
         }
         return $route;
     }
 }
Example #17
0
 /**
  * Sets some Zikula-specific defaults for the routes.
  *
  * @param Route $route The route instance.
  * @param AbstractBundle $bundle The bundle.
  * @param string $bundleName The bundle's name.
  * @return array The legacy $type and $func parameters.
  */
 private function setZikulaDefaults(Route $route, AbstractBundle $bundle, $bundleName)
 {
     $defaults = $route->getDefaults();
     $defaults['_zkBundle'] = $bundleName;
     if ($bundle instanceof AbstractModule) {
         $defaults['_zkModule'] = $bundleName;
     } else {
         if ($bundle instanceof AbstractTheme) {
             $defaults['_zkTheme'] = $bundleName;
         }
     }
     $controller = $this->sanitizeController($bundleName, $defaults['_controller']);
     $controller = explode(':', $controller);
     $defaults['_zkType'] = $type = lcfirst($controller[1]);
     $defaults['_zkFunc'] = $func = $controller[2];
     $defaults['_controller'] = $bundleName . ":" . $controller[1] . ":" . $func;
     $route->setDefaults($defaults);
     return [$type, $func];
 }
 /**
  * Gets the settings form route.
  *
  * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
  *   The entity type.
  *
  * @return \Symfony\Component\Routing\Route|null
  *   The generated route, if available.
  */
 protected function getSettingsFormRoute(EntityTypeInterface $entity_type)
 {
     if (!$entity_type->getBundleEntityType()) {
         $route = new Route("/admin/structure/{$entity_type->id()}/settings");
         $route->setDefaults(['_form' => 'Drupal\\drupalbristol_sponsors\\Form\\SponsorEntitySettingsForm', '_title' => "{$entity_type->getLabel()} settings"])->setRequirement('_permission', $entity_type->getAdminPermission())->setOption('_admin_route', TRUE);
         return $route;
     }
 }
 public function __construct()
 {
     $this->request = Request::createFromGlobals();
     $this->container = Container::getInstance();
     /* Parse params file - Begin */
     $params = $this->parseYamlFile(APP_DIR . DS . 'configs' . DS . 'params.yml');
     $isDev = $params['environment'] === 'development';
     if ($isDev) {
         Debug::enable(E_STRICT);
     }
     date_default_timezone_set($params['timezone']);
     /* Parse params file - End */
     /* Parse routes file - Begin */
     $routes = $this->parseYamlFile(APP_DIR . DS . 'configs' . DS . 'routes.yml');
     $collection = new RouteCollection();
     foreach ($routes as $name => $options) {
         $parts = explode(':', $options['defaults']['_controller']);
         $options['defaults'] = array('_controller' => "{$parts[0]}\\Controllers\\{$parts[1]}Controller::{$parts[2]}Action");
         $route = new Route($options['path']);
         $route->setDefaults($options['defaults']);
         $route->setRequirements(isset($options['requirements']) ? $options['requirements'] : array());
         $route->setOptions(isset($options['options']) ? $options['options'] : array());
         $route->setHost(isset($options['host']) ? $options['host'] : '');
         $route->setSchemes(isset($options['schemes']) ? $options['schemes'] : array());
         $route->setMethods(isset($options['methods']) ? $options['methods'] : array());
         $route->setCondition(isset($options['condition']) ? $options['condition'] : '');
         $collection->add($name, $route);
     }
     $this->container->setParameter('routes', $collection);
     /* Parse routes file - End */
     /* Composer ClassLoader - Begin */
     $composer_loader = new ClassLoader();
     $composer_loader->addPsr4('Application\\Controllers\\', APP_DIR . DS . 'layers' . DS . 'controllers');
     $composer_loader->addPsr4('Application\\Models\\', APP_DIR . DS . 'layers' . DS . 'models');
     $composer_loader->register();
     /* Composer ClassLoader - End */
     /* Set error controller - Begin */
     $namespace = $isDev ? 'Hideks\\Controller\\' : 'Application\\Controllers\\';
     $this->container->setParameter('exception.controller', $namespace . 'ErrorController::exceptionAction');
     /* Set error controller - End */
     /* Assetic configuration setup - Begin */
     $filter_manager = new FilterManager();
     $filter_manager->set('css_min', new CssMinFilter());
     $filter_manager->set('lessphp', new LessphpFilter());
     $filter_manager->set('js_min', new JSMinFilter());
     $asset_factory = new AssetFactory(APP_DIR . DS . 'assets' . DS);
     $asset_factory->setDebug($isDev);
     $asset_factory->setFilterManager($filter_manager);
     $asset_factory->addWorker(new CacheBustingWorker());
     $this->container->setParameter('assetic.factory', $asset_factory);
     /* Assetic configuration setup - End */
     /* Twig configuration setup - Begin */
     $this->container->setParameter('twig.debug', $isDev);
     $this->container->setParameter('twig.cache', $isDev ? false : APP_DIR . DS . 'cache' . DS . 'twig');
     $twig_loader = $this->container->get('twig.loader');
     $twig_loader->addPath(APP_DIR . DS . 'layers' . DS . 'views');
     /* Twig configuration setup - End */
     /* Active Record configuration setup - Begin */
     $active_record = \ActiveRecord\Config::instance();
     $active_record->set_model_directory(APP_DIR . DS . 'layers' . DS . 'models');
     $active_record->set_connections($params['connections']);
     $active_record->set_default_connection($params['environment']);
     /* Active Record configuration setup - End */
 }
Example #20
0
 /**
  * Refresh the entity
  *
  * @ORM\PostLoad
  */
 public function refreshEntity()
 {
     parent::setPath($this->path);
     parent::setDefaults($this->defaults);
     parent::setRequirements($this->requirements);
     parent::setOptions($this->options);
     parent::setHost($this->host);
     parent::setMethods($this->methods);
     parent::setSchemes($this->schemes);
 }
 protected function configureRoute(Route $route, ReflectionClass $class, ReflectionMethod $method, $annot)
 {
     $defaults = array('annotation' => $annot, 'controller' => $class->name, 'action' => $method->name);
     $route->setDefaults($defaults);
 }