/**
  * @dataProvider templateRequestsProvider
  *
  * @param $url
  * @param $method
  * @param $result
  */
 public function testTemplateMatch($url, $method, $result)
 {
     $route = new FinalRoute('testResult');
     $route->setUrlTemplate(new UrlTemplate(['host' => '{subdomain:[a-z]{2,5}}.example.com', 'path' => '/item/{itemId:\\d+}/', 'scheme' => 'http', 'method' => 'get|post']));
     $requestContext = RequestContextFactory::createFromUrl($url, $method);
     $routeMatch = $route->doMatch($requestContext);
     if (empty($result)) {
         $this->assertEmpty($routeMatch, $method . ':' . $url . " should not match");
     } else {
         $this->assertNotEmpty($routeMatch, $method . ':' . $url . " should match");
         $this->assertInstanceOf('\\ReRoute\\RouteMatch', $routeMatch);
     }
 }
Example #2
0
 /**
  * @inheritdoc
  */
 public function build(Url $url, UrlBuilder $urlBuilder)
 {
     $url->setHost('admin.example.com');
     $parts = [];
     $action = $urlBuilder->useParameter('action');
     if (!empty($action) and $action != $this->defaultAction) {
         $parts[] = $action;
     }
     $controllerItem = $urlBuilder->useParameter('controllerItem');
     if (!empty($parts) or !empty($controllerItem) and $action != $this->defaultControllerItem) {
         $parts[] = $controllerItem;
     }
     $controllerGroup = $urlBuilder->useParameter('controllerGroup');
     if (!empty($parts) or !empty($controllerGroup) and $action != $this->defaultControllerGroup) {
         $parts[] = $controllerGroup;
     }
     $url->setPath('/' . implode('/', array_reverse($parts)));
     parent::build($url, $urlBuilder);
 }