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; }
/** * 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); }
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+')); } } }
/** * 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(); }
//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 { $failure = $router->getFailedRoute();