public function testRouteConfig() { $di = new Di(); $di['request'] = new \Phalcon\Http\Request(); $di['annotations'] = new \Phalcon\Annotations\Adapter\Memory(); $router = new \Phalcon\Mvc\Router\Annotations(false); $router->setDI($di); $resolver = new RouterResolver($router); $resolver->resolve(include __DIR__ . '/Fixtures/route_config.php'); $router->handle(); $routes = [['uri' => '/test4', 'method' => 'GET', 'controller' => 'test4', 'action' => 'test4'], ['uri' => '/test4', 'method' => 'POST', 'controller' => 'test4', 'action' => 'test4'], ['uri' => '/test5', 'method' => 'POST', 'controller' => 'test5', 'action' => 'test5'], ['uri' => '/test6', 'method' => 'GET', 'controller' => 'test6', 'action' => 'test6'], ['uri' => '/test1', 'method' => 'GET', 'controller' => 'test1', 'action' => 'test1'], ['uri' => '/test2', 'method' => 'POST', 'controller' => 'test2', 'action' => 'test2'], ['uri' => '/test3', 'method' => 'GET', 'controller' => 'test3', 'action' => 'test3']]; $this->assertCount(count($routes) - 1, $router->getRoutes()); foreach ($routes as $route) { $_SERVER['REQUEST_METHOD'] = $route['method']; $router->handle($route['uri']); $this->assertEquals($router->getControllerName(), $route['controller']); $this->assertEquals($router->getActionName(), $route['action']); $this->assertEquals($router->isExactControllerName(), true); } }
public function testAnnotations() { $di = new Di(); $di['request'] = new \Phalcon\Http\Request(); $di['annotations'] = new \Phalcon\Annotations\Adapter\Memory(); $router = new \Phalcon\Mvc\Router\Annotations(false); $router->setDI($di); $loader = new AnnotationRouteLoader($router); $loader->load(__DIR__ . '/Fixtures'); $router->handle(); $this->assertCount(3, $router->getRoutes()); $routes = [['uri' => '/test1', 'method' => 'GET', 'controller' => 'test1', 'action' => 'test1'], ['uri' => '/test2', 'method' => 'POST', 'controller' => 'test2', 'action' => 'test2'], ['uri' => '/test3', 'method' => 'GET', 'controller' => 'test3', 'action' => 'test3']]; foreach ($routes as $route) { $_SERVER['REQUEST_METHOD'] = $route['method']; $router->handle($route['uri']); $this->assertEquals($router->getControllerName(), $route['controller']); $this->assertEquals($router->getActionName(), $route['action']); $this->assertEquals($router->isExactControllerName(), true); } }
public function testRouterFullResources() { $router = new Phalcon\Mvc\Router\Annotations(false); $router->setDI($this->_getDI()); $router->addResource('Robots'); $router->addResource('Products'); $router->handle(); $this->assertEquals(count($router->getRoutes()), 6); $route = $router->getRouteByName('save-robot'); $this->assertTrue(is_object($route)); $this->assertEquals(get_class($route), 'Phalcon\\Mvc\\Router\\Route'); $route = $router->getRouteByName('save-product'); $this->assertTrue(is_object($route)); $this->assertEquals(get_class($route), 'Phalcon\\Mvc\\Router\\Route'); $routes = array(array('uri' => '/products/save', 'method' => 'PUT', 'controller' => 'Products', 'action' => 'save', 'params' => array()), array('uri' => '/products/save', 'method' => 'POST', 'controller' => 'Products', 'action' => 'save', 'params' => array()), array('uri' => '/products/edit/100', 'method' => 'GET', 'controller' => 'Products', 'action' => 'edit', 'params' => array('id' => '100')), array('uri' => '/products', 'method' => 'GET', 'controller' => 'Products', 'action' => 'index', 'params' => array()), array('uri' => '/robots/edit/100', 'method' => 'GET', 'controller' => 'Robots', 'action' => 'edit', 'params' => array('id' => '100')), array('uri' => '/robots', 'method' => 'GET', 'controller' => 'Robots', 'action' => 'index', 'params' => array()), array('uri' => '/robots/save', 'method' => 'PUT', 'controller' => 'Robots', 'action' => 'save', 'params' => array())); foreach ($routes as $route) { $_SERVER['REQUEST_METHOD'] = $route['method']; $router->handle($route['uri']); $this->assertEquals($router->getControllerName(), $route['controller']); $this->assertEquals($router->getActionName(), $route['action']); $this->assertEquals($router->getParams(), $route['params']); $this->assertEquals($router->isExactControllerName(), true); } }
$view->registerEngines(array(".volt" => 'Phalcon\\Mvc\\View\\Engine\\Volt')); return $view; }); //Setup a base URI so that all generated URIs include the "tutorial" folder $di->set('url', function () { $url = new \Phalcon\Mvc\Url(); $url->setBaseUri('/silar/'); return $url; }); $di->setShared('session', function () { $session = new Phalcon\Session\Adapter\Files(); $session->start(); return $session; }); $di->set('router', function () { $router = new \Phalcon\Mvc\Router\Annotations(); $router->addResource('Api', '/api'); return $router; }); $di->set('db', function () use($config) { return new \Phalcon\Db\Adapter\Pdo\Mysql(array("host" => $config->database->host, "username" => $config->database->username, "password" => $config->database->password, "dbname" => $config->database->dbname)); }); $di->set('dispatcher', function () use($di) { $dispatcher = new Phalcon\Mvc\Dispatcher(); return $dispatcher; }); $di->set('hash', function () { $hash = new \Phalcon\Security(); //Set the password hashing factor to 12 rounds $hash->setWorkFactor(12); return $hash;
<?php $di['router'] = function () { //Use the annotations router $router = new \Phalcon\Mvc\Router\Annotations(false); //Read the annotations from ProductsController if the uri starts with /api/products $router->addResource('Products', '/api/products'); return $router; };
<?php $di['router'] = function () { //Use the annotations router $router = new \Phalcon\Mvc\Router\Annotations(false); //Read the annotations from Backend\Controllers\ProductsController if the uri starts with /api/products $router->addModuleResource('backend', 'Products', '/api/products'); return $router; };
/** * Initializes router system */ public function init() { $di = $this->getDi(); $eventsManager = $this->getEventsManager(); $routerCacheKey = 'router_data.cache'; $cacheData = $di->get('cacheData'); $router = $cacheData->get($routerCacheKey); if ($this->_config->application->debug || $router === null) { $saveToCache = $router === null; // load all controllers of all modules for routing system $modules = $di->get('modules'); //Use the annotations router $defaultModule = $this->_config->application->defaultModule; $router = new \Phalcon\Mvc\Router\Annotations(false); $router->removeExtraSlashes(true); $router->setDefaultModule($defaultModule); $router->setDefaultNamespace(ucfirst($defaultModule) . '\\Controller'); $router->setDefaultController("index"); $router->setDefaultAction("index"); $router->add('/:module/:controller/:action', ['module' => 1, 'controller' => 2, 'action' => 3]); $router->add('/:controller/:action', ['controller' => 1, 'action' => 2]); $router->add('/:controller', ['controller' => 1]); $router->notFound(['module' => $defaultModule, 'namespace' => ucfirst($defaultModule) . '\\Controller', 'controller' => 'error', 'action' => 'show404']); //Read the annotations from controllers foreach ($modules as $module => $enabled) { if (!$enabled) { continue; } if (!file_exists($this->_config->application->modulesDir . ucfirst($module) . '/Controller')) { continue; } $files = scandir($this->_config->application->modulesDir . ucfirst($module) . '/Controller'); // get all file names foreach ($files as $file) { // iterate files if ($file == "." || $file == "..") { continue; } $controller = ucfirst($module) . '\\Controller\\' . str_replace('Controller.php', '', $file); if (strpos($file, 'Controller.php') !== false) { $router->addModuleResource(strtolower($module), $controller); } } } if ($saveToCache) { $cacheData->save($routerCacheKey, $router, 3600); // 30 days cache } } $di->set('router', $router); }
$loader->registerNamespaces(["Jowy\\Phrest" => __DIR__ . "/../app"], true)->register(); $di = new \Phalcon\DI\FactoryDefault(); $di->setShared("config", function () { require __DIR__ . "/../app/Config/Config.php"; return new \Phalcon\Config($config); }); $di->setShared("db", function () use($di) { return new \Phalcon\Db\Adapter\Pdo\Mysql(["host" => $di["config"]->database->host, "username" => $di["config"]->database->username, "password" => $di["config"]->database->password, "port" => $di["config"]->database->port, "dbname" => $di["config"]->database->dbname]); }); $di->setShared("apiResponse", function () { $response = new \Jowy\Phrest\Core\Response(new \League\Fractal\Manager()); $response->setPhalconResponse(new \Phalcon\Http\Response()); return $response; }); $di->set("router", function () { $router = new \Phalcon\Mvc\Router\Annotations(false); $files = array_diff(scandir(__DIR__ . "/../app/controllers/"), array('..', '.')); foreach ($files as $file) { $file = array_slice(preg_split('/(?=[A-Z])/', $file), 1); $router->addResource("Jowy\\Phrest\\Controllers\\" . $file[0]); } return $router; }); $di->set("view", function () { $view = new \Phalcon\Mvc\View(); $view->disable(); return $view; }); $di->setShared("dispatcher", function () use($di) { $eventsManager = $di->getShared('eventsManager'); $security = new \Jowy\Phrest\Core\Security($di);
<?php /** * Created by PhpStorm. * User: sify * Date: 15-6-29 * Time: 下午11:44 */ //Normal Router //$router = new Phalcon\Mvc\Router(false); //$router->add("/index/k/:params", ["controller" => "index", "action" => "k", "params" => 1])->via(["POST"]); //$router->add("/test/:controller/:params",["controller" => "test", "action" => '1', 'params' => 2]); //Annotations Router $router = new Phalcon\Mvc\Router\Annotations(false); //read annotations from ** controller if the uri starts with /** $router->addResource('Test', '/test'); $router->addResource('Handler', '/handler'); $router->addResource('Dispatcher', '/dispatcher'); $router->addResource('Common', '/common'); $router->addResource('Auth', '/auth'); $router->addResource('Assessor', '/assessor'); $router->addResource('Admin', '/admin');
<?php $di['router'] = function () { //Use the annotations router $router = new \Phalcon\Mvc\Router\Annotations(false); //This will do the same as above but only if the handled uri starts with /robots $router->addResource('Robots', '/robots'); return $router; };
<?php $di->set('url', function () { $url = new \Phalcon\Mvc\Url(); $url->setBaseUri('/'); return $url; }); $di->setShared('router', function () use($di) { $router = new \Phalcon\Mvc\Router\Annotations(false); $router->setDefaultModule('frontend'); $router->setDefaultController('Application\\Frontend\\Controllers\\Default'); $router->setDefaultAction('home'); $resources = array('backend' => array('Application\\Backend\\Controller\\User'), 'common' => array('Application\\Common\\Controller\\Test', 'Application\\Common\\Controller\\Locale', 'Application\\Common\\Controller\\Error'), 'frontend' => array('Application\\Frontend\\Controller\\Default', 'Application\\Frontend\\Controller\\User')); foreach ($resources as $module => $controllers) { foreach ($controllers as $controller) { $router->addModuleResource($module, $controller); } } if ($di instanceof \Phalcon\DI\FactoryDefault\CLI) { $router = new \Phalcon\Cli\Router(); } return $router; });
/** * Encargado de enrutar las peticiones de acuerdo a su url * @return DI object */ public function setRouter() { $this->di->set('router', function () { $router = new \Phalcon\Mvc\Router\Annotations(); $router->addResource('Api', '/api'); return $router; }); }
// $di->set('filter',function() { // return new \Phalcon\Filter(); // }); // $di->set('validation',function () // { // return new Phalcon\Validation(); // }); // $di->set('security', function(){ // $security = new Phalcon\Security(); // //Set the password hashing factor to 12 rounds // $security->setWorkFactor(12); // return $security; // }, true); $di['router'] = function () { //Use the annotations router $router = new \Phalcon\Mvc\Router\Annotations(); //Read the annotations from ProductsController if the uri starts with /api/products $router->addResource('UserApi', '/UserApi'); $router->addResource('UserData', '/UserData'); $router->addResource('AccountApi', '/AccountApi'); $router->addResource('AuthApi', '/AuthApi'); $router->addResource('UserGroup', '/UserGroup'); return $router; }; //Setup a base URI so that all generated URIs include the "tutorial" folder $di->set('url', function () use($config) { $url = new \Phalcon\Mvc\Url(); $url->setBaseUri($config->application->baseUri); return $url; }); //Start the session the first time when some component request the session service