Пример #1
0
 /**
  * 分发之前
  * 如果在一个请求处理过程中, 发生了forward, 则这个事件会被触发多次
  * @author xiaotangren  <*****@*****.**>
  */
 public function preDispatch(UnPHP_Request_Abstract $request, UnPHP_Response_Abstract $response)
 {
     //$this->initModule($module_name, $request, $response);
     if (Pub_Url::$custom_route) {
         $data = Pub_Url::$custom_route;
         if ($data['type'] == 'p') {
             $request->module = 'Goods';
             $request->controller = 'Index';
             $request->action = 'index';
             $request->method = 'GET';
             $request->setParam('id', $data['id']);
         } else {
             $request->module = 'Category';
             $request->controller = 'Index';
             $request->action = 'index';
             $request->method = 'GET';
             $request->setParam('ocid', $data['id']);
         }
     }
     $module_name = $request->getModuleName();
     //var_dump($module_name);exit;
     $this->initModule($module_name, $request, $response);
 }
Пример #2
0
 /**
  * 默认路由: /m/c/a/params1/1/params2/2/...
  * @author Xiao Tangren  <*****@*****.**>
  * @data 2014-03-05
  * @param type $request
  * @return boolean
  */
 public function route(UnPHP_Request_Abstract $request)
 {
     $rs = FALSE;
     $match = array();
     $base_url = $request->getServer('REQUEST_URI');
     $selfPramas = stripos($base_url, '?');
     $base_url = $selfPramas ? substr($base_url, 0, $selfPramas) : $base_url;
     $match = explode("/", trim($base_url, '/\\'));
     $n = count($match);
     switch ($n) {
         case 0:
             $request->setModuleName($request->getDefaultModule());
             $request->setControllerName($request->getDefaultController());
             $request->setActionName($request->getDefaultAction());
             $rs = TRUE;
             break;
         case 1:
             if (in_array($match[0], UnPHP::app()->getModules())) {
                 $request->setModuleName($match[0]);
                 $request->setControllerName($request->getDefaultController());
                 $request->setActionName($request->getDefaultAction());
             } else {
                 $request->setModuleName($request->getDefaultModule());
                 $request->setControllerName($match[0]);
                 $request->setActionName($request->getDefaultAction());
             }
             $rs = TRUE;
             break;
         case 2:
             if (in_array($match[0], UnPHP::app()->getModules())) {
                 $request->setModuleName($match[0]);
                 $request->setControllerName($match[1]);
                 $request->setActionName($request->getDefaultAction());
                 $rs = TRUE;
                 break;
             } else {
                 $request->setModuleName($request->getDefaultModule());
                 $request->setControllerName($match[0]);
                 $request->setActionName($match[1]);
                 $rs = TRUE;
                 break;
             }
         default:
             if (in_array($match[0], UnPHP::app()->getModules())) {
                 $request->setModuleName($match[0]);
                 $request->setControllerName($match[1]);
                 $request->setActionName($match[2]);
                 for ($i = 4; $i < $n; $i += 2) {
                     $request->setParam($match[$i - 1], $match[$i]);
                 }
             } else {
                 $request->setModuleName($request->getDefaultModule());
                 $request->setControllerName($match[0]);
                 $request->setActionName($match[1]);
                 for ($i = 3; $i < $n; $i += 2) {
                     $request->setParam($match[$i - 1], $match[$i]);
                 }
             }
             $rs = TRUE;
             break;
     }
     return $rs;
 }