/** * Little fix to allow mixed regexp and rails routes in the router * @see lib/ezc/MvcTools/src/routes/ezcMvcRegexpRoute::prefix() */ public function prefix($prefix) { // Detect the Regexp delimiter $patternDelim = $this->pattern[0]; // Add the Regexp delimiter to the prefix $prefix = $patternDelim . $prefix . $patternDelim; parent::prefix($prefix); }
public function testsMatchComplex() { $route = new ezcMvcRegexpRoute('@^people(/((?P<nr>[0-9]+)|(?P<name>.+)))?$@', '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' => 'hawking'), $request->variables); $request = new ezcMvcRequest(); $request->uri = 'people/42'; $routeInfo = $route->matches($request); self::assertSame('testController', $routeInfo->controllerClass); self::assertEquals(array('nr' => '42', 'name' => ''), $request->variables); $request = new ezcMvcRequest(); $request->uri = 'people'; $routeInfo = $route->matches($request); self::assertSame('testController', $routeInfo->controllerClass); self::assertEquals(array('nr' => '', 'name' => ''), $request->variables); $request = new ezcMvcRequest(); $request->uri = 'people/'; $routeInfo = $route->matches($request); self::assertEquals(null, $routeInfo); }