예제 #1
0
 public function testMatchSameAsInternalRoute()
 {
     $request = new ezcMvcRequest();
     $request->uri = '/foo';
     $internalRoute = new ezcMvcRailsRoute('/foo', 'testDummyController', 'testDummyAction');
     $versionRoute = new ezpRestVersionedRoute($internalRoute, 1);
     $internalRouteInfo = $internalRoute->matches($request);
     $versionRouteInfo = $versionRoute->matches($request);
     self::assertSame('/foo', $internalRouteInfo->matchedRoute);
     self::assertSame('/foo', $versionRouteInfo->matchedRoute);
     self::assertSame('testDummyController', $internalRouteInfo->controllerClass);
     self::assertSame('testDummyController', $versionRouteInfo->controllerClass);
     self::assertSame('testDummyAction', $internalRouteInfo->action);
     self::assertSame('testDummyAction', $versionRouteInfo->action);
 }
예제 #2
0
    /**
     * Evaluates the URI against this route and protocol.
     *
     * @param ezcMvcRequest $request
     * @return ezcMvcRoutingInformation|null
     */
    public function matches( ezcMvcRequest $request )
    {
        if ( $this->protocol === null || $request->protocol === $this->protocol )
            return parent::matches( $request );

        return null;
    }
예제 #3
0
 /**
  * Constructs a new ezpMvcRailsRoute with $pattern for protocols used as
  * keys in $protocolActionMap
  *
  * Examples:
  * <code>
  * $route = new ezpMvcRailsRoute(
  *      '/content/node/:nodeId',
  *      'ezpRestContentController'
  *      array(
  *          'http-get' => 'viewContent',
  *          'http-delete' => 'deleteContent'
  *      )
  * );
  * </code>
  *
  * will define the route /content/node/:nodeId and a different method in
  * the controller will be called depending on the used HTTP verb. If
  * $protocolActionMap is a string, we assume the mapping is done for
  * http-get unless another protocol is indicated in deprecated param $protocol
  * (kept to not introduce a BC break)
  *
  * @param string $pattern
  * @param string $controllerClassName
  * @param array|string $protocolActionMap
  * @param array $defaultValues
  * @param null|string $protocol (deprecated) Match specific protocol if
  *                              $protocolActionMap is a string, eg: 'http-get';
  */
 public function __construct($pattern, $controllerClassName, $protocolActionMap, array $defaultValues = array(), $protocol = null)
 {
     if (is_string($protocolActionMap)) {
         if ($protocol === null) {
             $protocolActionMap = array('http-get' => $protocolActionMap);
         } else {
             // compatibility with 4.6 route definition
             $protocolActionMap = array($protocol => $protocolActionMap);
         }
     }
     if (!isset($protocolActionMap['http-options'])) {
         $protocolActionMap['http-options'] = 'httpOptions';
     }
     $this->protocolActionMap = $protocolActionMap;
     parent::__construct($pattern, $controllerClassName, '', $defaultValues);
 }
예제 #4
0
 public function testsMatchComplex()
 {
     $route = new ezcMvcRailsRoute('people/:slug', 'testController', 'action', array('nr' => '', 'name' => ''));
     $request = new ezcMvcRequest();
     $request->uri = 'people/hawking';
     $routeInfo = $route->matches($request);
     self::assertSame('testController', $routeInfo->controllerClass);
     self::assertEquals(array('nr' => '', 'name' => '', 'slug' => 'hawking'), $request->variables);
     $request->uri = 'people/42';
     $routeInfo = $route->matches($request);
     self::assertSame('testController', $routeInfo->controllerClass);
     self::assertEquals(array('nr' => '', 'name' => '', 'slug' => 42), $request->variables);
     $request->uri = 'people';
     $routeInfo = $route->matches($request);
     self::assertEquals(null, $routeInfo);
     $request->uri = 'people/';
     $routeInfo = $route->matches($request);
     self::assertEquals(null, $routeInfo);
 }
예제 #5
0
파일: rails.php 프로젝트: bmdevel/ezc
 public function testMatchWithDotInUrl3a()
 {
     $request = new ezcMvcRequest();
     $request->uri = '/topic/list/foo.bar.ezc.is.cool';
     $route = new ezcMvcRailsRoute('/topic/list/:newsgroup_name', 'testController');
     $routeInfo = $route->matches($request);
     self::assertSame('/topic/list/:newsgroup_name', $routeInfo->matchedRoute);
     self::assertSame('testController', $routeInfo->controllerClass);
     self::assertSame(array('newsgroup_name' => 'foo.bar.ezc.is.cool'), $request->variables);
 }