Example #1
0
 /**
  * Détermine le Controller, l'action ainsi que les paramètres en fonction de la requête
  * @param string $uri La requête
  * @return array
  */
 public static function buildFromURI($uri)
 {
     $uri = explode('/', $uri);
     array_shift($uri);
     // Pour ne pas avoir un paramètre vide (quand un "/" est en fin d'URL)
     if (empty($uri[count($uri) - 1])) {
         unset($uri[count($uri) - 1]);
     }
     $controller = empty($uri[0]) ? 'pages' : $uri[0];
     $action = empty($uri[1]) ? null : $uri[1];
     $params = empty($uri[2]) ? null : array_slice($uri, 2, count($uri));
     return Route::build($controller, $action, $params);
 }
Example #2
0
<a href="<?php 
// Turn on sef urls in config.php to make use of this
echo Route::build('home/second_page/', 'second-page');
?>
">
	Second page
</a>
Example #3
0
 public function testWith2Params()
 {
     $route = new Route("/{lang}/view/{slug}");
     $this->assertEquals("/en/view/test", $route->build(array("lang" => "en", "slug" => "test")));
     $this->assertFalse($route->build(array("slug" => "test")));
     $this->assertFalse($route->build(array("lang" => "en")));
     $this->assertFalse($route->build());
     $route = new Route("/{lang}/view/{slug}", array("lang" => ""));
     $this->assertEquals("/en/view/test", $route->build(array("lang" => "en", "slug" => "test")));
     $this->assertEquals("/view/test", $route->build(array("slug" => "test")));
     $this->assertFalse($route->build(array("lang" => "en")));
     $this->assertFalse($route->build());
     $route = new Route("/{lang}/view/{slug}", array("lang" => "en"));
     $this->assertEquals("/view/test", $route->build(array("lang" => "en", "slug" => "test")));
     $this->assertEquals("/bg/view/test", $route->build(array("lang" => "bg", "slug" => "test")));
     $this->assertEquals("/view/test", $route->build(array("slug" => "test")));
     $this->assertFalse($route->build(array("lang" => "en")));
     $this->assertFalse($route->build());
     $route = new Route("/{lang}/view/{slug}", array("slug" => ""));
     $this->assertEquals("/en/view/test", $route->build(array("lang" => "en", "slug" => "test")));
     $this->assertEquals("/en/view", $route->build(array("lang" => "en")));
     $this->assertEquals("/en/view", $route->build(array("lang" => "en", "slug" => "")));
     $this->assertFalse($route->build(array("slug" => "test")));
     $this->assertFalse($route->build());
     $route = new Route("/{lang}/view/{slug}", array("slug" => "foo"));
     $this->assertEquals("/en/view/test", $route->build(array("lang" => "en", "slug" => "test")));
     $this->assertEquals("/en/view", $route->build(array("lang" => "en")));
     $this->assertEquals("/en/view", $route->build(array("lang" => "en", "slug" => "foo")));
     $this->assertEquals("/en/view", $route->build(array("lang" => "en", "slug" => "")));
     $this->assertFalse($route->build(array("slug" => "test")));
     $this->assertFalse($route->build(array("slug" => "foo")));
     $this->assertFalse($route->build());
     $route = new Route("/{lang}/view/{slug}", array("slug" => "foo", "lang" => "en"));
     $this->assertEquals("/view/test", $route->build(array("lang" => "en", "slug" => "test")));
     $this->assertEquals("/bg/view/test", $route->build(array("lang" => "bg", "slug" => "test")));
     $this->assertEquals("/view", $route->build(array("lang" => "en")));
     $this->assertEquals("/view", $route->build(array("lang" => "en", "slug" => "foo")));
     $this->assertEquals("/view", $route->build(array("lang" => "en", "slug" => "")));
     $this->assertEquals("/view", $route->build(array("lang" => "en")));
     $this->assertEquals("/view", $route->build(array("lang" => "en", "slug" => "foo")));
     $this->assertEquals("/view", $route->build(array("lang" => "en", "slug" => "")));
 }
Example #4
0
 /**
  * Implements RouteInterface::build() method
  * {@inheritdoc}
  *
  * @param string Which parts of the path should be used: PATH_ONLY, PATH_FULL, PATH_NETWORK
  */
 public function build(array $parameters = array(), $pathType = self::PATH_AUTO)
 {
     $path = parent::build($parameters, $pathType);
     if ($pathType == self::PATH_AUTO) {
         if (!empty($parameters["_host"])) {
             if (!empty($parameters["_scheme"])) {
                 $pathType = self::PATH_FULL;
             } else {
                 $pathType = self::PATH_NETWORK;
             }
         } else {
             $pathType = self::PATH_ONLY;
         }
     }
     if ($pathType == self::PATH_NETWORK || $pathType == self::PATH_FULL) {
         if (isset($parameters["_host"])) {
             $path = "//" . $parameters["_host"] . $path;
             if ($pathType == self::PATH_FULL) {
                 $scheme = isset($parameters["_scheme"]) ? $scheme = $parameters["_scheme"] : ($scheme = $this->getScheme());
                 if ($scheme) {
                     $path = $scheme . ":" . $path;
                 }
             }
         }
     }
     return $path;
 }