Ejemplo n.º 1
0
 /**
  * @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);
     }
 }
Ejemplo n.º 2
0
 /**
  * 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;
         }
     }
 }
Ejemplo n.º 3
0
 /**
  * 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());
 }
Ejemplo n.º 4
0
 /**
  * @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());
     }
 }
Ejemplo n.º 5
0
 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);
 }