Exemplo n.º 1
0
 /**
  * @return ZRouteMap
  */
 public function routePath($a_path, ZRoute &$a_route = null, $a_throws = false)
 {
     $path = new ZRoutePath();
     $p = new ZRoute($a_path);
     $route =& $a_route;
     if (!$route) {
         $route = new ZRoute();
     }
     $t = $p->getSegment(0);
     $t = empty($t) ? self::DEFAULT_MODULE_NAME : $t;
     if ($this->getLoader()->hasModule($t)) {
         try {
             $route->setModule($t);
             $path->module =& $this->getLoader()->module($t);
         } catch (ZException $e) {
             if ($a_throws) {
                 throw $e;
             }
             return $path;
         }
         return $path->module->routePath($p->pop_start(), $route, $a_throws);
     } else {
         $route->setModule($this->getName());
         $path->module =& $this;
     }
     if (!$path->module) {
         return $path;
     }
     $t = $p->getSegment(0);
     $t = empty($t) ? self::DEFAULT_CONTROLLER_NAME : $t;
     $p->pop_start();
     try {
         $route->setController($t);
         $path->controller =& $path->module->getLoader()->controller($t);
     } catch (ZException $e) {
         if ($a_throws) {
             throw $e;
         }
         return $path;
     }
     if (!$path->controller) {
         return $path;
     }
     $t = $p->getSegment(0);
     $t = empty($t) ? self::DEFAULT_ACTION_NAME : $t;
     $p->pop_start();
     if ($path->controller->hasAction($t)) {
         $route->setAction($t);
         $path->action = $t;
     } else {
         if ($a_throws) {
             throw new ZException('Action ' . $t . ' not found at ' . $path->controller->getName() . ' controller in ' . $path->module->getName() . ' module', ZControllerException::EXC_ACTION);
         }
         return $path;
     }
     foreach ($p->getSegments() as $_p) {
         $route->push($_p);
     }
     $route->getQuery()->setData($p->getQuery());
     unset($p);
     return $path;
 }
Exemplo n.º 2
0
 protected final function fixroute($a_route)
 {
     $r = new ZRoute($a_route);
     if (!$r->getModule()) {
         $r->setModule($this->getConfig()->getValue('module.default_name', self::DEFAULT_MODULE_NAME));
     }
     if (!$r->getController()) {
         $r->setController($this->getConfig()->getValue('controller.default_name', self::DEFAULT_CONTROLLER_NAME));
     }
     if (!$r->getAction()) {
         $r->setAction($this->getConfig()->getValue('controller.default_action', self::DEFAULT_ACTION_NAME));
     }
     $o = (string) $r;
     unset($r);
     return $o;
 }