private function _changeDispatch(Zend_Controller_Request_Abstract &$request, Zend_Controller_Response_Abstract $response) { $module = $request->getParam($request->getModuleKey()); $controller = $request->getParam($request->getControllerKey()); $action = $request->getParam($request->getActionKey()); $submodule = ''; $subcontroller = ''; $subaction = ''; if ('admin' != $module) { $submodule = $module; $subcontroller = $controller ? $controller : 'index'; $subaction = $action ? $action : 'index'; $controller = 'index'; $action = 'subroute'; $module = 'default'; } else { $submodule = $controller; $subcontroller = $action ? $action : 'index'; //долно быть настроено в route //$subaction = ( $action ) ? $action : 'index'; $controller = 'index'; $action = 'subroute'; } $request->setParam($request->getModuleKey(), $module); $request->setModuleName($module); $request->setParam($request->getControllerKey(), $controller); $request->setControllerName($controller); $request->setParam($request->getActionKey(), $action); $request->setActionName($action); $request->setParam('submodule', $submodule); $request->setParam('subcontroller', $subcontroller); $request->setParam('subaction', $subaction); }
/** * 初始化 * * @return void */ public function init() { //request和response对象获取 $this->request = $this->getRequest(); $this->response = $this->getResponse(); $this->modKey = $this->request->getModuleKey(); $this->modName = $this->request->getModuleName(); $this->ctlKey = $this->request->getControllerKey(); $this->ctlName = $this->request->getControllerName(); $this->actKey = $this->request->getActionKey(); $this->actName = $this->request->getActionName(); //smarty模板设置 $this->view = Common_View::getInstance(); //重新设置模板目录 $_viewBaseDir = implode(DS, array(APP_NOPUBLIC_MODULES_PATH, $this->modName, 'views')); $params = array('template_dir' => $_viewBaseDir . DS . 'html', 'compile_dir' => $_viewBaseDir . DS . 'compile', 'cache_dir' => $_viewBaseDir . DS . 'cache'); $this->view->setViewParams($params); unset($_viewBaseDir); }
/** * Set request keys based on values in request object * * @return void */ protected function _setRequestKeys() { if (null !== $this->_request) { $this->_moduleKey = $this->_request->getModuleKey(); $this->_controllerKey = $this->_request->getControllerKey(); $this->_actionKey = $this->_request->getActionKey(); } if (null !== $this->_dispatcher) { $this->_defaults += array($this->_controllerKey => $this->_dispatcher->getDefaultControllerName(), $this->_actionKey => $this->_dispatcher->getDefaultAction(), $this->_moduleKey => $this->_dispatcher->getDefaultModule()); } $this->_keysSet = true; }
public function routeShutdown(Zend_Controller_Request_Abstract $request) { try { // Set Request Object $_request[$request->getModuleKey()] = $request->getModuleName(); $_request[$request->getControllerKey()] = $request->getControllerName(); $_request[$request->getActionKey()] = $request->getActionName(); if (PHP_SAPI != 'cli' && $request->getModuleName() != 'cronjob') { $_request['url'] = $_SERVER['REQUEST_URI']; } Monitor_Request::getInstance()->setRequest($_request); } catch (Zend_Exception $e) { throw $e; } }
/** * Called before Zend_Controller_Front begins evaluating the * request against its routes. * * @param Zend_Controller_Request_Abstract $request * @return void */ public function routeStartup(Zend_Controller_Request_Abstract $request) { $frontController = Zend_Controller_Front::getInstance(); // Request keys $moduleKey = $request->getModuleKey(); $controllerKey = $request->getControllerKey(); $actionKey = $request->getActionKey(); // Defaults $moduleName = $frontController->getDefaultModule(); $controllerName = $frontController->getDefaultControllerName(); $actionName = $frontController->getDefaultAction(); // Set a url path $module = $request->getQuery($moduleKey, $moduleName); $controller = $request->getQuery($controllerKey, $controllerName); $action = $request->getQuery($actionKey, $actionName); // Assemble if ($request->getPathInfo() == '/') { $modulePart = $module == $moduleName ? $module : '/' . $module; $controllerPart = $controller == $controllerName && $action == $actionName ? '' : '/' . $controller; $actionPart = $action == $actionName && $controller ? '' : '/' . $action; $request->setPathInfo($modulePart . $controllerPart . $actionPart); } }
/** * Sets parameters for request object * * Module name, controller name and action name * * @param Zend_Controller_Request_Abstract $request * @param array $params */ protected function _setRequestParams($request, $params) { foreach ($params as $param => $value) { $request->setParam($param, $value); if ($param === $request->getModuleKey()) { $request->setModuleName($value); } if ($param === $request->getControllerKey()) { $request->setControllerName($value); } if ($param === $request->getActionKey()) { $request->setActionName($value); } } }
/** * Filters a request for use with applyParameters. * * @param \Zend_Controller_Request_Abstract $request * @param boolean $removePost Optional * @param boolean $includeNumericFilters When true numeric filter keys (0, 1, 2...) are added to the filter as well * @return \MUtil_Model_ModelAbstract */ public function applyRequest(\Zend_Controller_Request_Abstract $request, $removePost = true, $includeNumericFilters = false) { $parameters = $request->getParams(); // Remove MVC fields unset($parameters[$request->getModuleKey()], $parameters[$request->getControllerKey()], $parameters[$request->getActionKey()]); if ($removePost) { // Do not use POST fields for filter $parameters = array_diff_key($parameters, $_POST); } // Remove all empty values (but not arrays) from the filter $parameters = array_filter($parameters, function ($i) { return is_array($i) || strlen($i); }); $this->applyParameters($parameters, $includeNumericFilters); return $this; }