public function preDispatch(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) { $actionName = $request->getActionName(); $curMethod = strtolower($request->getMethod()); if (in_array($curMethod, $this->allowMethods)) { $request->setActionName($actionName . ucfirst($curMethod)); } else { if ($this->denyRedirectURL) { $response->setRedirect($this->denyRedirectURL); } else { die($this->denyMsg); } } }
public function routerShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) { $aliasName = $request->getActionName(); $name = str_replace('-', '', $aliasName); $request->setActionName($name); $aliasController = $request->getControllerName(); // $name = str_replace('-','',$aliasController); $list = explode('-', $aliasController); if ($list && count($list)) { foreach ($list as &$item) { $item = ucfirst($item); } $request->setControllerName(implode('', $list)); } $request->setParam('action_alias_name', $aliasName); }
public function dispatchLoopStartup(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) { $session = Yaf_Session::getInstance(); $uid = $session->offsetGet('uid'); $url = $request->getRequestUri(); $controller_name = strtolower($request->getControllerName()); $action_name = strtolower($request->getActionName()); $request_type = $request->getParam('request_type', 'page'); // print_R($action_name); if (empty($uid)) { if (stripos($url, 'login') === false) { $this->headerLocation('/index/login'); } } else { return true; } }
/** * 路由结束事件 * * @author mrmsl <*****@*****.**> * @date 2012-12-25 09:33:26 * @lastmodify 2013-02-17 11:43:31 by mrmsl * * @param object $request Yaf_Request_Http实例 * @param object $response Yaf_Response_Http实例 * * @return void 无返回值 */ public function routerShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) { define('CONTROLLER_NAME', $request->getControllerName()); //控制器 define('ACTION_NAME', $request->getActionName()); //操作方法 define('REQUEST_METHOD', $request->getMethod()); //请求方法 define('TEMPLATE_FILE', THEME_PATH . strtolower(CONTROLLER_NAME) . '/' . ACTION_NAME . C('TEMPLATE_SUFFIX')); //模板文件 define('REFERER_PAGER', empty($_SERVER['HTTP_REFERER']) ? '' : urldecode($_SERVER['HTTP_REFERER'])); //来路页面 //请求uri if (isset($_SERVER['REQUEST_URI'])) { define('REQUEST_URI', urldecode($_SERVER['REQUEST_URI'])); } else { $querystring = $request->getQuery(); /** * @ignore */ define('REQUEST_URI', urldecode($request->getRequestUri() . ($querystring ? '?' . http_build_query($querystring) : ''))); } $this->_denyControllers(); //禁止直接访问Error,Base控制器 if ($languages = F(MODULE_NAME . DS . LANG . DS . strtolower(CONTROLLER_NAME), '', LANG_PATH)) { //当前控制器语言包 L($languages); } }
private function _fixDefault(Yaf_Request_Abstract $request) { $module = $request->getModuleName(); if (empty($module) || !is_string($module)) { $request->setModuleName($this->_default_module); } else { $request->setModuleName(ucfirst($module)); } $controller = $request->getControllerName(); if (empty($controller) || !is_string($controller)) { $request->setControllerName($this->_default_controller); } else { $request->setControllerName($this->_formatName($controller)); } $action = $request->getActionName(); if (empty($action) || !is_string($action)) { $request->setActionName($this->_default_action); } else { $request->setActionName(strtolower($action)); } }
/** * 执行过滤器 * * @param Yaf_Request_Abstract $request */ public function executeFilterMethod(Yaf_Request_Abstract $request) { $routeName = strtolower($request->getModuleName()) . '_' . strtolower($request->getControllerName()) . '_' . strtolower($request->getActionName()); if (array_key_exists($routeName, $this->filterRegistry)) { self::$requestObj = $request; $registry = $this->filterRegistry[$routeName]; $FilterClass = $registry[1]; $FilterMethod = $registry[0]; $FilterObj = new $FilterClass(); $FilterObj->{$FilterMethod}(); } }
private function _fixDefault(Yaf_Request_Abstract $request) { $module = $request->getModuleName(); if (empty($module) || !is_string($module)) { $request->setModuleName(Yaf_G::YAF_ROUTER_DEFAULT_MODULE); } else { $request->setModuleName(ucfirst($module)); } $controller = $request->getControllerName(); if (empty($controller) || !is_string($controller)) { $request->setControllerName(Yaf_G::YAF_ROUTER_DEFAULT_CONTROLLER); } else { $request->setControllerName($this->_formatName($controller)); } $action = $request->getActionName(); if (empty($action) || !is_string($action)) { $request->setActionName(Yaf_G::YAF_ROUTER_DEFAULT_ACTION); } else { $request->setActionName(strtolower($action)); } }
public function preDispatch(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) { //将下划线请求的控制器名称重写为大小写 $controller = $request->getControllerName(); if (false !== ($pos = strpos($controller, '_'))) { $request->setControllerName(substr($controller, 0, $pos) . substr($controller, $pos + 1)); } //在模块名称合法的情况下,对方法名称做处理 $moduleName = $request->getModuleName(); if (in_array($moduleName, Yaf_Application::app()->getModules())) { //记录将访问的接口名称 Yaf_Registry::set('REQUEST_API_NAME', strtolower($moduleName . '/' . $controller)); //action中存在".",不存在则默认返回Json数据并且指向index动作 $action = $request->getActionName(); if (false !== strpos($action, '.')) { //source && format $param = explode('.', $action); if (count($param) < 2 || empty($param[1])) { die('request error.'); } //记录需要格式化的类型 Yaf_Registry::set('REQUEST_FORMAT_TYPE', $param[1]); switch ($param[1]) { case 'json': header("Content-type:application/json;charset=utf-8"); $request->setActionName('index'); break; case 'html': header("Content-type:text/html;charset=utf-8"); $request->setActionName($param[0]); break; case 'zip': header('Content-Type:application/zip;charset=utf-8'); $request->setActionName('index'); break; } $source = $param[0]; } else { //header("Content-type:application/json;charset=utf-8"); //默认返回json数据 //$request->setActionName($action); //默认全部指向index方法 //Yaf_Registry::set('REQUEST_FORMAT_TYPE', $param[1]); $source = $action; } self::_analySource($source); } }