/** * Retourne un tableau représentant l'url passée par la barre d'adresses * Se base sur la table de routage * @return tableau représentant l'url * @exception RouteNotFoundException si l'uri n'est pas présente dans * > la table de routage */ public function buildWithRewriting() { $url = array(); $uri = Minz_Request::getURI(); $find = false; foreach ($this->routes as $route) { $regex = '*^' . $route['route'] . '$*'; if (preg_match($regex, $uri, $matches)) { $url['c'] = $route['controller']; $url['a'] = $route['action']; $url['params'] = $this->getParams($route['params'], $matches); $find = true; break; } } if (!$find && $uri != '/') { throw new Minz_RouteNotFoundException($uri, Minz_Exception::ERROR); } // post-traitement $url = Minz_Url::checkUrl($url); return $url; }
/** * Relance une requête * @param $url l'url vers laquelle est relancée la requête * @param $redirect si vrai, force la redirection http * > sinon, le dispatcher recharge en interne */ public static function forward($url = array(), $redirect = false) { if (!is_array($url)) { header('Location: ' . $url); exit; } $url = Minz_Url::checkUrl($url); if ($redirect) { header('Location: ' . Minz_Url::display($url, 'php')); exit; } else { self::_controllerName($url['c']); self::_actionName($url['a']); self::_params(array_merge(self::$params, $url['params'])); Minz_Dispatcher::reset(); } }