|
|
|
|
@ -62,6 +62,61 @@ class RouteConfig { |
|
|
|
|
|
|
|
|
|
// parse resources |
|
|
|
|
$this->processResources($this->routes); |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
* OCS routes go into a different collection |
|
|
|
|
*/ |
|
|
|
|
$oldCollection = $this->router->getCurrentCollection(); |
|
|
|
|
$this->router->useCollection($oldCollection.'.ocs'); |
|
|
|
|
|
|
|
|
|
// parse ocs simple routes |
|
|
|
|
$this->processOCS($this->routes); |
|
|
|
|
|
|
|
|
|
$this->router->useCollection($oldCollection); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private function processOCS(array $routes) { |
|
|
|
|
$ocsRoutes = isset($routes['ocs']) ? $routes['ocs'] : []; |
|
|
|
|
foreach ($ocsRoutes as $ocsRoute) { |
|
|
|
|
$name = $ocsRoute['name']; |
|
|
|
|
$postFix = ''; |
|
|
|
|
|
|
|
|
|
if (isset($ocsRoute['postfix'])) { |
|
|
|
|
$postfix = $ocsRoute['postfix']; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$url = $ocsRoute['url']; |
|
|
|
|
$verb = isset($ocsRoute['verb']) ? strtoupper($ocsRoute['verb']) : 'GET'; |
|
|
|
|
|
|
|
|
|
$split = explode('#', $name, 2); |
|
|
|
|
if (count($split) != 2) { |
|
|
|
|
throw new \UnexpectedValueException('Invalid route name'); |
|
|
|
|
} |
|
|
|
|
$controller = $split[0]; |
|
|
|
|
$action = $split[1]; |
|
|
|
|
|
|
|
|
|
$controllerName = $this->buildControllerName($controller); |
|
|
|
|
$actionName = $this->buildActionName($action); |
|
|
|
|
|
|
|
|
|
// register the route |
|
|
|
|
$handler = new RouteActionHandler($this->container, $controllerName, $actionName); |
|
|
|
|
|
|
|
|
|
$router = $this->router->create('ocs.'.$this->appName.'.'.$controller.'.'.$action . $postfix, $url) |
|
|
|
|
->method($verb) |
|
|
|
|
->action($handler); |
|
|
|
|
|
|
|
|
|
// optionally register requirements for route. This is used to |
|
|
|
|
// tell the route parser how url parameters should be matched |
|
|
|
|
if(array_key_exists('requirements', $ocsRoute)) { |
|
|
|
|
$router->requirements($ocsRoute['requirements']); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// optionally register defaults for route. This is used to |
|
|
|
|
// tell the route parser how url parameters should be default valued |
|
|
|
|
if(array_key_exists('defaults', $ocsRoute)) { |
|
|
|
|
$router->defaults($ocsRoute['defaults']); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|