Example #1
0
 public function testDefaultParamDoesNotOverrideParam()
 {
     $stack = new SimpleRouteStack();
     $stack->addRoute('foo', new TestAsset\DummyRouteWithParam());
     $stack->setDefaultParam('foo', 'baz');
     $this->assertEquals('bar', $stack->match(new Request())->getParam('foo'));
 }
 /**
  * match(): defined by \Zend\Mvc\Router\RouteInterface
  *
  * @see    \Zend\Mvc\Router\RouteInterface::match()
  * @param  Request $request
  * @return RouteMatch
  */
 public function match(Request $request)
 {
     if (!method_exists($request, 'getUri')) {
         return null;
     }
     if ($this->baseUrl === null && method_exists($request, 'getBaseUrl')) {
         $this->setBaseUrl($request->getBaseUrl());
     }
     $uri = $request->getUri();
     $baseUrlLength = strlen($this->baseUrl) ?: null;
     if ($this->requestUri === null) {
         $this->setRequestUri($uri);
     }
     if ($baseUrlLength !== null) {
         $pathLength = strlen($uri->getPath()) - $baseUrlLength;
         foreach ($this->routes as $name => $route) {
             if (($match = $route->match($request, $baseUrlLength)) instanceof RouteMatch && $match->getLength() === $pathLength) {
                 $match->setMatchedRouteName($name);
                 foreach ($this->defaultParams as $paramName => $value) {
                     if ($match->getParam($paramName) === null) {
                         $match->setParam($paramName, $value);
                     }
                 }
                 return $match;
             }
         }
     } else {
         return parent::match($request);
     }
     return null;
 }
Example #3
0
 /**
  * match(): defined by Route interface.
  *
  * @see    Route::match()
  * @param  Request $request
  * @return RouteMatch
  */
 public function match(Request $request)
 {
     if (!method_exists($request, 'uri')) {
         return null;
     }
     $uri = $request->uri();
     $baseUrlLength = strlen($this->baseUrl) ?: null;
     if ($this->requestUri === null) {
         $this->setRequestUri($uri);
     }
     if ($baseUrlLength !== null) {
         $pathLength = strlen($uri->getPath()) - $baseUrlLength;
         foreach ($this->routes as $route) {
             if (($match = $route->match($request, $baseUrlLength)) instanceof RouteMatch && $match->getLength() === $pathLength) {
                 return $match;
             }
         }
     } else {
         return parent::match($request);
     }
     return null;
 }