/** * @return RouterChainRule **/ public function chain(RouterRule $route, $separator = '/') { $chain = new RouterChainRule(); $chain->chain($this)->chain($route, $separator); return $chain; }
public function testAssemblyWithHostnameAndTransparent() { $chain = new RouterChainRule(); $host = RouterHostnameRule::create(':subdomain.example.com')->setDefaults(array('subdomain' => 'www')); $transparent = RouterTransparentRule::create(':bar/:area/:action')->setDefaults(array('bar' => 'barvalue', 'area' => 'controller', 'action' => 'create')); $chain->chain($host)->chain($transparent); $this->assertEquals('http://www.example.com/', $chain->assembly()); $this->assertEquals('http://www.example.com/barvalue/controller/misc', $chain->assembly(array('action' => 'misc'))); $this->assertEquals('http://www.example.com/barvalue/misc', $chain->assembly(array('area' => 'misc'))); $this->assertEquals('http://www.example.com/misc', $chain->assembly(array('bar' => 'misc'))); }
public function testRouteWithHostnameMaskAndRegexpAndBaseUrlRuleChain() { $base = 'http://www.example.com/~user/public_html/www/'; $request = $this->buildRequest('http://test123d.example.com/~user/public_html/www/test/123.html'); $host = RouterHostnameRule::create(':subdomain.example.com')->setDefaults(array('module' => 'nope-bla', 'area' => 'test'))->setRequirements(array('subdomain' => '[\\da-z][\\da-z\\_]*[\\da-z]')); $transparent = RouterRegexpRule::create('test/(\\d+)\\.html')->setDefaults(array(1 => 345))->setMap(array(1 => 'testId')); $chain = new RouterChainRule(); $chain->chain($host)->chain($transparent); $this->router->setBaseUrl(HttpUrl::create()->parse($base)); $this->router->addRoute('HostnameMaskWithRegexp', $chain); $token = $this->router->route($request); $this->assertEquals(4, count($token->getAttached())); $this->assertEquals('test', $token->getAttachedVar('area')); $this->assertEquals(123, $token->getAttachedVar('testId')); $this->assertEquals('nope-bla', $token->getAttachedVar('module')); $this->assertEquals('test123d', $token->getAttachedVar('subdomain')); }