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);
     }
 }
예제 #4
0
     $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;
예제 #5
0
<?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;
};
예제 #6
0
<?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;
};
예제 #7
0
 /**
  * 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);
예제 #9
0
파일: routes.php 프로젝트: sify21/pmail
<?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;
};
예제 #11
0
<?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;
});
예제 #12
0
 /**
  * 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;
     });
 }
예제 #13
0
파일: index.php 프로젝트: hyfjjjj/HHA-Web
 // $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