예제 #1
0
 /**
  * Setup the application's routes
  *
  * @return void
  */
 protected function _initRoutes()
 {
     $this->bootstrap('frontController');
     /* @var $frontController Zend_Controller_Front */
     $frontController = $this->getResource('frontController');
     // Add PUT handler controller module
     $frontController->registerPlugin(new Zend_Controller_Plugin_PutHandler());
     // BEGIN: Setup routes
     // Remove default routes
     $frontController->getRouter()->removeDefaultRoutes();
     /* @var $router Zend_Controller_Router_Rewrite */
     $router = $frontController->getRouter();
     // developer.* hostname route
     $developerHostRoute = new Zend_Controller_Router_Route_Hostname(rtrim($this->_options['resources']['frontController']['developerUrl'], '/'), array('module' => 'developer'));
     $plainPathRoute = new Zend_Controller_Router_Route_Module();
     $router->addRoute('developer', $developerHostRoute->chain($plainPathRoute));
     // api.* hostname route
     $apiHostRoute = new Zend_Controller_Router_Route_Hostname(preg_replace('/\\/*v.+/i', '', $frontController->getBaseUrl()), array('module' => 'api'));
     // Format of routes in array is: URI Pattern => Controller
     $routes = array('/' => 'index_1', ':version/' => 'index_2', ':version/countries/*' => 'countries', ':version/country/*' => 'country_1', ':version/country/:countryId/*' => 'country_2');
     // Chain REST resource URIs to controllers
     foreach ($routes as $pattern => $controller) {
         $router->addRoute($controller, $apiHostRoute->chain(new Zend_Controller_Router_Route($pattern, array('module' => 'api', 'controller' => preg_replace('/_[0-9]+/i', '', $controller)))));
     }
     // END: Setup routes
 }
예제 #2
0
 public function testChainingWorksWithWildcardAndOneParameter()
 {
     $foo = new Zend_Controller_Router_Route_Hostname('www.zend.com', array('module' => 'simple', 'controller' => 'foo', 'action' => 'bar'));
     $bar = new Zend_Controller_Router_Route(':controller/:action/*', array('controller' => 'index', 'action' => 'index'));
     $chain = $foo->chain($bar);
     $request = new Zend_Controller_Router_ChainTest_Request('http://www.zend.com/foo/bar/id/12');
     $res = $chain->match($request);
     $this->assertEquals('simple', $res['module']);
     $this->assertEquals('foo', $res['controller']);
     $this->assertEquals('bar', $res['action']);
 }
예제 #3
0
 public function testForcedSchemeAssembling()
 {
     $request = new Zend_Controller_Router_RewriteTest_Request_Stub('www.zend.com');
     $route = new Zend_Controller_Router_Route_Hostname('www.zend.com', array('controller' => 'host-foo', 'action' => 'host-bar'), array(), 'https');
     $route->setRequest($request);
     $url = $route->assemble();
     $this->assertEquals('https://www.zend.com', $url);
 }
예제 #4
0
파일: RewriteTest.php 프로젝트: travisj/zf
 public function testAssemblingWithHostnameWithChainHttp()
 {
     $foo = new Zend_Controller_Router_Route_Hostname('www.zend.com');
     $bar = new Zend_Controller_Router_Route_Static('bar');
     $chain = $foo->chain($bar);
     $this->_router->addRoute('foo-bar', $chain);
     $this->assertEquals('http://www.zend.com/bar', $this->_router->assemble(array(), 'foo-bar'));
 }
예제 #5
0
 /**
  * Overrides assemble to add port
  *
  * @param  array $data
  * @param  boolean $reset
  * @return string
  */
 public function assemble($data = array(), $reset = false, $encode = false, $partial = false)
 {
     // Default assemble
     $url = parent::assemble($data, $reset, $encode, $partial);
     // Add port if needed
     return $url . ($this->hasPort() ? ':' . $this->getPort() : '');
 }
예제 #6
0
파일: Bootstrap.php 프로젝트: br00k/tnc-web
 /**
  * Initialize custom CORE Routing
  *
  */
 protected function _initRoutes()
 {
     $this->bootstrap('frontController');
     $router = $this->frontController->getRouter();
     $router->removeDefaultRoutes();
     $userCountry = Zend_Auth::getInstance()->getIdentity() ? strtolower(Zend_Auth::getInstance()->getIdentity()->country) : 'en';
     $mainRoute = new Zend_Controller_Router_Route_Hostname(getenv('HTTP_HOST'), array('language' => $userCountry ? $userCountry : 'en'), array('abbreviation' => '\\w+'));
     $defaultRoute = new Zend_Controller_Router_Route_Static('', array('module' => 'core', 'controller' => 'index', 'action' => 'index'));
     $router->addRoute('main-default', $mainRoute->chain($defaultRoute));
     $moduleRoute = new Zend_Controller_Router_Route(':module/:controller/:action/*', array('module' => 'core', 'controller' => 'index', 'action' => 'index'));
     $router->addRoute('main-module', $mainRoute->chain($moduleRoute));
     $languageRoute = new Zend_Controller_Router_Route(':language/:module/:controller/:action/*', array('module' => 'core', 'controller' => 'index', 'action' => 'index'), array('language' => '[a-z]{2}'));
     $router->addRoute('main-language', $mainRoute->chain($languageRoute));
     // @todo: removed language, so that no longer works!
     $gridRoute = new Zend_Controller_Router_Route(':module/:controller/list/:order/:dir/:page', array('module' => 'core', 'controller' => 'index', 'order' => '', 'dir' => 'asc', 'page' => 1, 'action' => 'list'), array('page' => '\\d+'));
     $router->addRoute('grid', $mainRoute->chain($gridRoute));
     $scheduleRoute = new Zend_Controller_Router_Route('/core/schedule/list/*', array('module' => 'core', 'controller' => 'schedule', 'action' => 'list'));
     $router->addRoute('schedule', $mainRoute->chain($scheduleRoute));
     // @todo: this doesn't allow for languages!
     // added optional format parameter: (?:/(\d+))?
     // link can now be: /core/submit/mail/1/json
     $gridActionsRoute = new Zend_Controller_Router_Route_Regex('(\\S+)/(\\S+)/(edit|delete|reviewers|deletereviewer|chairs|deletechair|deletepresentation|mail|subscribe|unsubscribe)/(\\d+)(?:/(\\S+))?', array('language' => 'en', 'module' => 'core', 'controller' => '', 'action' => 'edit', 'format' => ''), array(1 => 'module', 2 => 'controller', 3 => 'action', 4 => 'id', 5 => 'format'), '%s/%s/%s/%d/%s');
     $router->addRoute('gridactions', $mainRoute->chain($gridActionsRoute));
     $route = new Zend_Controller_Router_Route_Regex('core/review/list/(\\d+)', array('lang' => ':lang', 'module' => 'core', 'controller' => 'review', 'action' => 'list'), array(1 => 'id'), 'core/review/list/%d');
     $router->addRoute('reviewlist', $mainRoute->chain($route));
     $route = new Zend_Controller_Router_Route_Regex('core/review/listpersonal/(\\d+)', array('lang' => ':lang', 'module' => 'core', 'controller' => 'review', 'action' => 'listpersonal'), array(1 => 'id'), 'core/review/listpersonal/%d');
     $router->addRoute('reviewlistpersonal', $mainRoute->chain($route));
     $route = new Zend_Controller_Router_Route('/core/review/new/:id', array('lang' => ':lang', 'module' => 'core', 'controller' => 'review', 'action' => 'new', 'id' => ':id'));
     $router->addRoute('reviewnew', $mainRoute->chain($route));
     $route = new Zend_Controller_Router_Route('/core/conference/timeslots/:id', array('lang' => ':lang', 'module' => 'core', 'controller' => 'conference', 'action' => 'timeslots', 'id' => ':id'), array('id' => '\\d+'));
     $router->addRoute('timeslots', $mainRoute->chain($route));
     $route = new Zend_Controller_Router_Route('/getfile/:id', array('module' => 'core', 'controller' => 'file', 'action' => 'getfile'), array('id' => '\\d+'));
     $router->addRoute('getfile', $mainRoute->chain($route));
     $route = new Zend_Controller_Router_Route_Regex('core/(file|session|presentation|user|event|poster)/(\\d+)', array('module' => 'core', 'action' => 'show'), array(1 => 'controller', 2 => 'id'), 'core/%s/%d');
     $router->addRoute('oneitem', $mainRoute->chain($route));
     $route = new Zend_Controller_Router_Route('core/feedback/:uuid', array('module' => 'core', 'controller' => 'feedback', 'action' => 'index'), array('uuid' => '[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89AB][0-9a-f]{3}-[0-9a-f]{12}'));
     $router->addRoute('feedback', $mainRoute->chain($route));
     // route all feedback section requests to to same action controller
     $route = new Zend_Controller_Router_Route_Regex('core/feedback/(general|participant|logistics|programme)', array('module' => 'core', 'controller' => 'feedback', 'action' => 'feedbacksection'), array(1 => 'section'), 'core/feedback/%s');
     $router->addRoute('feedbacksection', $mainRoute->chain($route));
     // feedback download results
     $route = new Zend_Controller_Router_Route_Regex('core/feedback/getresults/(general|participant|logistics|programme)', array('module' => 'core', 'controller' => 'feedback', 'action' => 'getresults'), array(1 => 'section'), 'core/feedback/getresults/%s');
     $router->addRoute('feedbackgetresults', $mainRoute->chain($route));
 }
예제 #7
0
 public function testRouteWithHostname()
 {
     $_SERVER['SERVER_NAME'] = 'www.zend.com';
     $request = new Zend_Controller_Router_RewriteTest_Request_Stub('www.zend.com');
     $route = new Zend_Controller_Router_Route_Hostname('www.zend.com', array('controller' => 'host-foo', 'action' => 'host-bar'));
     $values = $route->match($request);
     $this->assertEquals('host-foo', $values['controller']);
     $this->assertEquals('host-bar', $values['action']);
 }
예제 #8
0
파일: ChainTest.php 프로젝트: lortnus/zf1
 public function testChainingReuse()
 {
     $foo = new Zend_Controller_Router_Route_Hostname('www.zend.com', array('foo' => 'foo'));
     $profile = new Zend_Controller_Router_Route('user/:id', array('controller' => 'prof'));
     $article = new Zend_Controller_Router_Route('article/:id', array('controller' => 'art', 'action' => 'art'));
     $profileChain = $foo->chain($profile);
     $articleChain = $foo->chain($article);
     $request = new Zend_Controller_Router_ChainTest_Request('http://www.zend.com/user/1');
     $res = $profileChain->match($request);
     $this->assertType('array', $res);
     $this->assertEquals('prof', $res['controller']);
     $request = new Zend_Controller_Router_ChainTest_Request('http://www.zend.com/article/1');
     $res = $articleChain->match($request);
     $this->assertType('array', $res);
     $this->assertEquals('art', $res['controller']);
     $this->assertEquals('art', $res['action']);
 }