Exemple #1
0
 protected function route(\Aura\Web\Request $request)
 {
     $routerFactory = new RouterFactory();
     $router = $routerFactory->newInstance();
     foreach ($this->routes as $routeSpec) {
         $route = $router->add(null, $routeSpec["path"]);
         $route->addValues($routeSpec["params"]);
         if ($routeSpec["methods"]) {
             foreach ($routeSpec["methods"] as $method) {
                 $route->addMethod($method);
             }
             unset($method);
         }
     }
     $route = $router->match($request->url->get(PHP_URL_PATH), $_SERVER);
     if ($route) {
         $actionName = $route->params["action"];
     } else {
         $actionName = $this->notFoundAction;
     }
     $actionFactory = $this->actionFactory;
     $action = $actionFactory($actionName);
     $action->_setRequest($request);
     $action->_setParams($route->params);
     $action->_setResponderFactory($this->responderFactory);
     $action->_init();
     return $action;
 }
Exemple #2
0
 /**
  * Builds the required static objects for later use
  *
  * @return void
  * @author Dan Cox
  */
 public function __construct()
 {
     // Build Aura's Router
     $factory = new RouterFactory();
     static::$router = $factory->newInstance();
     // Build the request object
     static::$request = Request::createFromGlobals();
 }
 /**
  * @covers Context::setRouter
  * @covers Context::getRouter
  */
 public function testSetRouter()
 {
     $factory = new RouterFactory();
     $router = $factory->newInstance();
     $actual = $this->ctx->getRouter();
     $this->assertNull($actual);
     $this->ctx->setRouter($router);
     $actual = $this->ctx->getRouter();
     $this->assertSame($router, $actual);
 }
Exemple #4
0
 public function __construct($routes)
 {
     $router_factory = new RouterFactory();
     $this->_router = $router_factory->newInstance();
     // home route
     $this->_router->addGet('home', '/');
     // routes from config
     foreach ($routes as $name => $values) {
         foreach ($values['actions'] as $action) {
             $method = 'add' . Utils::firstToUpper($action['verb']);
             $this->_router->{$method}($name . '.' . $action['name'], '/' . $values['prefix'] . $action['pattern'])->addTokens(array('id' => '\\d+'));
         }
     }
 }
Exemple #5
0
 /**
  * What routes have been configured for this app?
  */
 public function initializeRoutes()
 {
     $router_factory = new RouterFactory();
     $router = $router_factory->newInstance();
     $routes_file = $this->getAppResourcePath('config/routes.php');
     if (file_exists($routes_file)) {
         // Let the app specify it's own routes.
         include_once $routes_file;
     } else {
         // Fall back on some sensible defaults.
         $router->add(null, '/');
         $router->add(null, '/{controller}');
         $router->add(null, '/{controller}/{action}');
         $router->add(null, '/{controller}/{action}/{id}');
     }
     $this->router = $router;
 }
 /**
  * Aura\Routerを使ったActionのResolver
  *
  * URLHandlerが難しい、という人向け
  *
  * @param Ethna_Event_Forward $event
  */
 public static function resolveAction(Ethna_Event_ResolveActionName $event)
 {
     $router = self::$router;
     if (!$router) {
         $router_factory = new RouterFactory();
         self::$router = $router = $router_factory->newInstance();
         $base_dir = $event->getController()->getDirectory("app");
         // MEMO(chobie): scopeを限定させてるだけ
         $path = $base_dir . DIRECTORY_SEPARATOR . "routes.php";
         if (is_file($path)) {
             call_user_func(function (Aura\Router\Router $router, $path) {
                 require $path;
             }, $router, $path);
         }
         $path = $base_dir . DIRECTORY_SEPARATOR . "routes_overrides.php";
         if (is_file($path)) {
             call_user_func(function (Aura\Router\Router $router, $path) {
                 require $path;
             }, $router, $path);
         }
     }
     $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
     $route = $router->match($path, $_SERVER);
     if ($route) {
         $ignore = array("controller", "action");
         foreach ($route->params as $key => $value) {
             if (in_array($key, $ignore)) {
                 continue;
             }
             if ($_SERVER['REQUEST_METHOD'] == "POST") {
                 $_POST[$key] = $value;
             } else {
                 if ($_SERVER['REQUEST_METHOD'] == "GET") {
                     $_GET[$key] = $value;
                 }
             }
         }
         $event->setActionName($route->params['action']);
     } else {
         $event->setActionName($event->getFallbackActionName());
     }
     $event->stopPropagation();
 }
Exemple #7
0
LogHelper::init();
//Add logger to Propel
Propel::getServiceContainer()->setLogger('defaultLogger', LogHelper::getLogger());
//Log request
$server_info = $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'];
LogHelper::logMessage($server_info);
if ($_SERVER['REQUEST_METHOD'] == "GET") {
    $params = var_export($_GET, true);
    LogHelper::logMessage('PARAMS: ' . $params);
} else {
    $params = var_export($_POST, true);
    LogHelper::logMessage('PARAMS: ' . $params);
}
LogHelper::logMessage('HTTP_ACCEPT: ' . $_SERVER['HTTP_ACCEPT']);
//And the magic comes
$router_factory = new RouterFactory();
$router = $router_factory->newInstance();
//Load routed from file
require_once "routes.php";
//Get route
$route = $router->match(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), $_SERVER);
//Dispatch route
if (isset($route->params['action'])) {
    $params = $route->params;
    $action = explode('.', $params['action']);
    $controller = "Controllers\\" . $action[0] . "Controller";
    $instance = new $controller();
    //Unset action so its not passed as first parameter probably use blacklist because of there can be some other params from route
    unset($params['action']);
    call_user_func_array(array($instance, $action[1]), $params);
} else {