/** * @return void */ protected function matchRoute() { if (isset($this->routeCollection)) { $context = new WebRequestContext(); $context->fromWebRequest($this->request); $matcher = new RouteMatcher($this->routeCollection, $context); try { Logger::debug('Looking for route match: ' . $this->request->getPathInfo()); $parameters = $matcher->match($this->request->getPathInfo()); if (is_array($matcher->getRouteOption('parameters'))) { $this->parameters = array_merge($this->parameters, $matcher->getRouteOption('parameters')); } } catch (ResourceNotFoundException $ex) { // Use our DefaultController $parameters = $this->getDefaultController(); } } else { // no route to match against, so use the DefaultController $parameters = $this->getDefaultController(); } if (!isset($parameters)) { Logger::alert('Route not found'); } else { $this->parseRouteParameters($parameters); Logger::debug('Route matched: ' . $this->route); } }
/** * directory where the view templates are located * * @param string $dir directory where the view templates are located * * @return void * @throws InvalidArgumentException */ public function setTemplateDir($dir) { if (substr($dir, 0, 1) != DIRECTORY_SEPARATOR && defined('SYNERGY_ROOT_DIR')) { $dir = SYNERGY_ROOT_DIR . DIRECTORY_SEPARATOR . $dir; } if (!is_dir($dir)) { throw new InvalidArgumentException(sprintf("Invalid template directory, %s", $dir)); } else { if (!is_readable($dir)) { throw new InvalidArgumentException(sprintf("Template directory %s not readable", $dir)); } else { $this->request->setTemplateDir($dir); $this->templateDir = $dir; } } }
/** * Tests that parameters can be passed into the route for use by the template * using the options parameter of a Route */ public function testRouteOptionParameters() { $params = array('home' => '/', 'suckit' => 'andsee'); // Create a route and routecollection $route0 = new Route('/', array('controller' => 'TestController'), array(), array('parameters' => $params)); $routes = new RouteCollection(); $routes->add('route0', $route0); // Our test request $request = WebRequest::create('/', 'GET', array('name' => 'Chris Noden')); $request->overrideGlobals(); $obj = new WebRouter($request); // Pass our route collection to our WebRouter object $obj->setRouteCollection($routes); // Match the request to the route $obj->match(); $controller = $obj->getController(); $this->assertEquals('TestController', $controller->getClassName()); $this->assertEquals($params, $controller->getParameters()); }
/** * @param WebRequest $request Object containing the HTTP request */ public function fromWebRequest(WebRequest $request) { $this->setBaseUrl($request->getBaseUrl()); $this->setPathInfo($request->getPathInfo()); $this->setMethod($request->getMethod()); $this->setHost($request->getHost()); $this->setScheme($request->getScheme()); $this->setHttpPort($request->isSecure() ? $this->getHttpPort : $request->getPort()); $this->setHttpsPort($request->isSecure() ? $request->getPort() : $this->getHttpsPort()); if (class_exists('\\Mobile_Detect') && $request->getDevice() instanceof \Mobile_Detect) { $this->setDevice($request->getDevice()); } }
public function testInternalSynergyRoute() { // This GET request should fail $request = WebRequest::create(SYNERGY_WEBTEST_BASEURL . '/_synergy_/css/bootstrap.min.css', 'GET'); $request->overrideGlobals(); $this->hasOutput(); $obj = new WebProject($request); $obj->setDeliverResponse(false); $obj->run(); $response = $obj->getResponse(); $this->assertInstanceOf('Synergy\\Project\\Web\\WebAsset', $response); $filename = $response->getFilename(); $filename = str_replace(dirname(SYNERGY_ROOT_DIR), '', $filename); $this->assertSame('/View/_synergy_/css/bootstrap.min.css', $filename); }