<?php $router = new Phalcon\Mvc\Router(false); $router->removeExtraSlashes(true); $router->setDefaults(array('controller' => 'apireference', 'action' => 'index')); $router->add('/error/404', array('controller' => 'error', 'action' => '_404'))->setName('404'); $router->notFound($router->getRouteByName('404')->getPaths()); // this only need to get URL to class reference by route name $router->add('/{language:[A-Za-z]{2,2}}/{version:((\\d+\\.\\d+\\.\\d+)|latest)}/{class:(?i)phalcon(/[\\w/]+)?}', array('controller' => 'apireference', 'action' => 'showClass'))->setName('showClass'); // this only need to get URL by route name $router->add('/{language:[A-Za-z]{2,2}}/{version:((\\d+\\.\\d+\\.\\d+)|latest)}/{type:(classes|namespaces|interfaces|changelog)}', array('controller' => 'apireference', 'action' => 'index'))->setName('showSummary'); $router->add('/?([A-Za-z]{2,2})?(/((\\d+\\.\\d+\\.\\d+)|latest))?(/(classes|namespaces|interfaces|changelog))?', array('controller' => 'apireference', 'action' => 'index', 'language' => 1, 'version' => 3, 'summary' => 6))->convert('language', function ($param) { return $param === 1 || !$param ? null : strtolower($param); })->convert('version', function ($param) { return $param === 3 || !$param ? null : $param; })->convert('summary', function ($param) { return $param === 6 || !$param ? 'classes' : $param; }); $router->add('(/([A-Za-z]{2,2}))?(/((\\d+\\.\\d+\\.\\d+)|latest))?/((?i)phalcon(/[\\w/]+)?)', array('controller' => 'apireference', 'action' => 'showClass', 'language' => 2, 'version' => 4, 'class' => 6))->convert('language', function ($param) { return $param === 2 || !$param ? null : strtolower($param); })->convert('version', function ($param) { return $param === 4 || !$param ? null : $param; })->convert('class', function ($param) { return $param === 6 || !$param ? null : str_replace('/', '\\', strtolower($param)); }); return $router;
public function testNamedRoutes() { Phalcon\Mvc\Router\Route::reset(); $router = new Phalcon\Mvc\Router(false); $usersFind = $router->add('/api/users/find')->setHttpMethods('GET')->setName('usersFind'); $usersAdd = $router->add('/api/users/add')->setHttpMethods('POST')->setName('usersAdd'); $this->assertEquals($usersAdd, $router->getRouteByName('usersAdd')); //second check when the same route goes from name lookup $this->assertEquals($usersAdd, $router->getRouteByName('usersAdd')); $this->assertEquals($usersFind, $router->getRouteById(0)); }