/** * Retrieve router object * * @return \Zend\Controller\Router\Rewrite */ public function getRouter() { if (null === $this->_router) { $bootstrap = $this->getBootstrap(); $bootstrap->bootstrap('frontcontroller'); $this->_router = $bootstrap->getContainer()->frontcontroller->getRouter(); $options = $this->getOptions(); if (!isset($options['routes'])) { $options['routes'] = array(); } if (isset($options['chainNameSeparator'])) { $this->_router->setChainNameSeparator($options['chainNameSeparator']); } if (isset($options['useRequestParametersAsGlobal'])) { $this->_router->useRequestParametersAsGlobal($options['useRequestParametersAsGlobal']); } $this->_router->addConfig(new \Zend\Config\Config($options['routes'])); } return $this->_router; }
public function test_getInstance_fromINIConfig() { $config = new INIConfig(__DIR__ . '/../Controller/_files/routes.ini', 'testing'); $router = new RewriteRouter(); $router->addConfig($config, 'routes'); $route = $router->getRoute('rest'); $this->assertType('Zend\\Rest\\Route', $route); $this->assertEquals('object', $route->getDefault('controller')); $request = $this->_buildRequest('GET', '/mod/project'); $values = $this->_invokeRouteMatch($request, array(), $route); $this->assertEquals('mod', $values['module']); $this->assertEquals('project', $values['controller']); $this->assertEquals('index', $values['action']); $request = $this->_buildRequest('POST', '/mod/user'); $values = $this->_invokeRouteMatch($request, array(), $route); $this->assertEquals('mod', $values['module']); $this->assertEquals('user', $values['controller']); $this->assertEquals('post', $values['action']); $request = $this->_buildRequest('GET', '/other'); $values = $this->_invokeRouteMatch($request, array(), $route); $this->assertFalse($values); }
public function testConfigChaining() { $routes = array('www' => array('type' => 'Zend\\Controller\\Router\\Route\\Hostname', 'route' => 'www.example.com', 'abstract' => true), 'user' => array('type' => 'Zend\\Controller\\Router\\Route\\Hostname', 'route' => 'user.example.com', 'abstract' => true), 'index' => array('type' => 'Zend\\Controller\\Router\\Route\\StaticRoute', 'route' => '', 'abstract' => true, 'defaults' => array('module' => 'default', 'controller' => 'index', 'action' => 'index')), 'imprint' => array('type' => 'Zend\\Controller\\Router\\Route\\StaticRoute', 'route' => 'imprint', 'abstract' => true, 'defaults' => array('module' => 'default', 'controller' => 'index', 'action' => 'imprint')), 'profile' => array('type' => 'Zend\\Controller\\Router\\Route\\StaticRoute', 'route' => 'profile', 'abstract' => true, 'defaults' => array('module' => 'user', 'controller' => 'profile', 'action' => 'index')), 'profile-edit' => array('type' => 'Zend\\Controller\\Router\\Route\\StaticRoute', 'route' => 'profile/edit', 'abstract' => true, 'defaults' => array('module' => 'user', 'controller' => 'profile', 'action' => 'edit')), 'www-index' => array('type' => 'Zend\\Controller\\Router\\Route\\Chain', 'chain' => 'www, index'), 'www-imprint' => array('type' => 'Zend\\Controller\\Router\\Route\\Chain', 'chain' => 'www, imprint'), 'user-index' => array('type' => 'Zend\\Controller\\Router\\Route\\Chain', 'chain' => 'user, index'), 'user-profile' => array('type' => 'Zend\\Controller\\Router\\Route\\Chain', 'chain' => 'user, profile'), 'user-profile-edit' => array('type' => 'Zend\\Controller\\Router\\Route\\Chain', 'chain' => 'user, profile-edit')); $router = new Router\Rewrite(); $front = Controller\Front::getInstance(); $front->resetInstance(); $front->setDispatcher(new Dispatcher()); $front->setRequest(new Request()); $router->setFrontController($front); $router->addConfig(new Config\Config($routes)); $request = new Request('http://user.example.com/profile'); $token = $router->route($request); $this->assertEquals('user', $token->getModuleName()); $this->assertEquals('profile', $token->getControllerName()); $this->assertEquals('index', $token->getActionName()); $request = new Request('http://foo.example.com/imprint'); $token = $router->route($request); $this->assertEquals('default', $token->getModuleName()); $this->assertEquals('imprint', $token->getControllerName()); $this->assertEquals('defact', $token->getActionName()); }