/** * @dataProvider hostnamedRegexRoutesProvider */ public function testHostnameRegexRouteGroup($actualHost, $expectedHost, $controller) { Phalcon\Mvc\Router\Route::reset(); $di = new Phalcon\DI(); $di->set('request', function () { return new Phalcon\Http\Request(); }); $router = new Phalcon\Mvc\Router(false); $router->setDI($di); $router->add('/edit', array('controller' => 'posts3', 'action' => 'edit3')); $group = new Phalcon\Mvc\Router\Group(); $group->setHostname('([a-z]+).phalconphp.com'); $group->add('/edit', array('controller' => 'posts', 'action' => 'edit')); $router->mount($group); $_SERVER['HTTP_HOST'] = $actualHost; $router->handle('/edit'); $this->assertEquals($router->getControllerName(), $controller); $this->assertEquals($router->getMatchedRoute()->getHostname(), $expectedHost); }
public function testHostnameRegexRouteGroup() { Phalcon\Mvc\Router\Route::reset(); $di = new Phalcon\DI(); $di->set('request', function () { return new Phalcon\Http\Request(); }); $router = new Phalcon\Mvc\Router(false); $router->setDI($di); $router->add('/edit', array('controller' => 'posts3', 'action' => 'edit3')); $group = new Phalcon\Mvc\Router\Group(); $group->setHostname('([a-z]+).phalconphp.com'); $group->add('/edit', array('controller' => 'posts', 'action' => 'edit')); $router->mount($group); $routes = array(array('hostname' => 'localhost', 'controller' => 'posts3'), array('hostname' => 'my.phalconphp.com', 'controller' => 'posts'), array('hostname' => null, 'controller' => 'posts3')); foreach ($routes as $route) { $_SERVER['HTTP_HOST'] = $route['hostname']; $router->handle('/edit'); $this->assertEquals($router->getControllerName(), $route['controller']); } }
public function testRegex() { Phalcon\Mvc\Router\Route::reset(); $router = new Phalcon\Mvc\Router(false); $router->add('/:controller/:action/:params', array("controller" => 1, "action" => 2, "params" => 3)); $router->handle('/c/a/p'); $this->assertEquals($router->getMatches(), array(0 => '/c/a/p', 1 => 'c', 2 => 'a', 3 => '/p')); Phalcon\Mvc\Router\Route::reset(); $router = new Phalcon\Mvc\Router(false); $router->add('/:controller/:action:params', array("controller" => 1, "action" => 2, "params" => 3), array(':controller' => '([a-zA-Z0-9_-]+)', ':action' => '([a-zA-Z0-9_-]+)', ':params' => '(/[a-zA-Z0-9_-]+)?')); $router->handle('/c/a/p'); $this->assertEquals($router->getMatches(), array(0 => '/c/a/p', 1 => 'c', 2 => 'a', 3 => '/p')); Phalcon\Mvc\Router\Route::reset(); $router = new Phalcon\Mvc\Router(false); $router->add(':controller:action:params', array("controller" => 1, "action" => 2, "params" => 3), array(':controller' => '/([a-zA-Z0-9_-]+)', ':action' => '/([a-zA-Z0-9_-]+)', ':params' => '(/[a-zA-Z0-9_-]+)?')); $router->handle('/c/a/p'); $this->assertEquals($router->getMatches(), array(0 => '/c/a/p', 1 => 'c', 2 => 'a', 3 => '/p')); Phalcon\Mvc\Router\Route::reset(); $router = new Phalcon\Mvc\Router(false); $router->add('/(:controller(/:action(/:params)?)?)?', array("controller" => 2, "action" => 4, "params" => 5), array(':controller' => '([a-zA-Z0-9_-]+)', ':action' => '([a-zA-Z0-9_-]+)', ':params' => '([a-zA-Z0-9_-]+)?')); $router->handle('/c/a/p'); $this->assertEquals($router->getMatches(), array(0 => '/c/a/p', 1 => 'c/a/p', 2 => 'c', 3 => '/a/p', 4 => 'a', 5 => '/p', 6 => 'p')); $router->handle('/c/a'); $this->assertEquals($router->getMatches(), array(0 => '/c/a', 1 => 'c/a', 2 => 'c', 3 => '/a', 4 => 'a')); $router->handle('/c'); $this->assertEquals($router->getMatches(), array(0 => '/c', 1 => 'c', 2 => 'c')); }
<?php $router = new Phalcon\Mvc\Router(true); $router->setDefaultModule("frontend"); $router->removeExtraSlashes(TRUE); $router->add('/:controller/:action[/]{0,1}', array('module' => 'frontend', 'controller' => 1, 'action' => 2, 'module' => 'frontend', 'namespace' => 'reportingtool\\Modules\\Modules\\Frontend\\Controllers')); $router->add('/{language:[a-z]{2}}/:controller[/]{0,1}', array('language' => 1, 'controller' => 2, 'action' => "index", 'module' => 'frontend', 'namespace' => 'reportingtool\\Modules\\Modules\\Frontend\\Controllers')); $router->add('/{language:[a-z]{2}}/:controller/:action[/]{0,1}', array('language' => 1, 'controller' => 2, 'action' => 3, 'module' => 'frontend', 'namespace' => 'reportingtool\\Modules\\Modules\\Frontend\\Controllers')); $router->add('/{language:[a-z]{2}}/:controller/:action/:int[/]{0,1}', array('language' => 1, 'controller' => 2, 'action' => 3, 'uid' => 4, 'module' => 'frontend', 'namespace' => 'reportingtool\\Modules\\Modules\\Frontend\\Controllers')); $router->add('/', array('controller' => 'index', 'action' => 'index', 'module' => 'frontend', 'namespace' => 'reportingtool\\Modules\\Modules\\Frontend\\Controllers')); $router->add('/session/index/', array('controller' => 'session', 'action' => 'index', 'module' => 'frontend', 'namespace' => 'reportingtool\\Modules\\Modules\\Frontend\\Controllers')); $router->add('/session/start[/]{0,1}', array('controller' => 'session', 'action' => 'start', 'module' => 'frontend', 'namespace' => 'reportingtool\\Modules\\Modules\\Frontend\\Controllers')); $router->add('/session/logout[/]{0,1}', array('controller' => 'session', 'action' => 'logout', 'module' => 'frontend', 'namespace' => 'reportingtool\\Modules\\Modules\\Frontend\\Controllers')); $router->add('/backend/{language:[a-z]{2}}/:controller[/]{0,1}', array('language' => 1, 'controller' => 2, 'action' => "index", 'module' => 'backend', 'namespace' => 'reportingtool\\Modules\\Modules\\Backend\\Controllers')); $router->add('/backend/{language:[a-z]{2}}/:controller/:action[/]{0,1}', array('language' => 1, 'controller' => 2, 'action' => 3, 'module' => 'backend', 'namespace' => 'reportingtool\\Modules\\Modules\\Backend\\Controllers')); $router->add('/backend/{language:[a-z]{2}}/:controller/:action/:int[/]{0,1}', array('language' => 1, 'controller' => 2, 'action' => 3, 'uid' => 4, 'module' => 'backend', 'namespace' => 'reportingtool\\Modules\\Modules\\Backend\\Controllers')); $router->add('/backend', array('controller' => 'index', 'action' => 'index', 'module' => 'backend', 'namespace' => 'reportingtool\\Modules\\Modules\\Backend\\Controllers')); $router->handle(); return $router;
public function testHostnameRegexRouteGroup() { $this->specify("Router Groups with regular expressions don't work properly", function ($actualHost, $expectedHost, $controller) { \Phalcon\Mvc\Router\Route::reset(); $di = new \Phalcon\DI(); $di->set("request", function () { return new \Phalcon\Http\Request(); }); $router = new \Phalcon\Mvc\Router(false); $router->setDI($di); $router->add("/edit", ["controller" => "posts3", "action" => "edit3"]); $group = new \Phalcon\Mvc\Router\Group(); $group->setHostname("([a-z]+).phalconphp.com"); $group->add("/edit", ["controller" => "posts", "action" => "edit"]); $router->mount($group); $_SERVER["HTTP_HOST"] = $actualHost; $router->handle("/edit"); expect($router->getControllerName())->equals($controller); expect($router->getMatchedRoute()->getHostname())->equals($expectedHost); }, ["examples" => $this->hostnamedRegexRoutesProvider()]); }
<?php $router = new Phalcon\Mvc\Router(); // ... define routes $uri = str_replace($_SERVER["SCRIPT_NAME"], '', $_SERVER["REQUEST_URI"]); $router->handle($uri);
<?php // Creating a router $router = new \Phalcon\Mvc\Router(); // Define routes here if any // ... // Taking URI from $_GET["_url"] $router->handle(); // or Setting the URI value directly $router->handle("/employees/edit/17"); // Getting the processed controller echo $router->getControllerName(); // Getting the processed action echo $router->getActionName(); //Get the matched route $route = $router->getMatchedRoute();
<?php //These routes simulate real URIs $testRoutes = array('/', '/index', '/index/index', '/index/test', '/products', '/products/index/', '/products/show/101'); $router = new Phalcon\Mvc\Router(); //Add here your custom routes //... //Testing each route foreach ($testRoutes as $testRoute) { //Handle the route $router->handle($testRoute); echo 'Testing ', $testRoute, '<br>'; //Check if some route was matched if ($router->wasMatched()) { echo 'Controller: ', $router->getControllerName(), '<br>'; echo 'Action: ', $router->getActionName(), '<br>'; } else { echo 'The route wasn\'t matched by any route<br>'; } echo '<br>'; }
public function setRoutes($file) { // Load Routes $routes = (include $file); // Setup Routes $di = $this->getDI(); $di->set('router', function () use($routes) { $router = new \Phalcon\Mvc\Router(); $router->setDefaultNamespace('Controllers'); // Setup Routes foreach ($routes as $uri => $route) { $router->add($uri, $route); } //$router->notFound(array('controller' => 'notfound', 'action' => 'index')); $router->handle(); return $router; }); $this->setDI($di); }