【发布时间】:2011-01-01 08:29:08
【问题描述】:
我正在尝试使用 Zend 创建一个登录系统,当用户尝试访问受限页面时,如果他们未登录,他们将被带到登录页面。我遇到的问题是获取他们的 URL试图事先访问。是否有一个 Zend 函数会在基本 Url 之后返回所有内容?例如,我需要将“moduleName/controllerName/ActionName/param1/value1/param2/value2”等作为查询字符串参数发送到登录页面(例如:login/?redirect=controllerName/actionName/param1/value1/参数2/值)
我可以得到控制器和动作名称,我得到参数,但它已经包括模块、控制器和动作。我只想得到我需要的东西。我想出了很长的路要这样做:
$controllerName = Zend_Controller_Front::getInstance()->getRequest()->getControllerName();
$actionName = Zend_Controller_Front::getInstance()->getRequest()->getActionName();
$paramArray = Zend_Controller_Front::getInstance()->getRequest()->getParams();
$params = '';
foreach($paramArray as $key => $value)
$params .= $key . "/" . $value;
$this->_redirect('/admin/login/?redirect=' . $controllerName . "/" . $actionName . "/" . $params);
但即便如此,我最终还是得到了我不想要的模块/管理员/控制器/索引/等参数。那么,在没有控制器和操作作为参数值的情况下,我如何才能将所有内容都作为字符串获取,就像它在 URL 中一样,或者至少只是字符串中的参数?
**编辑:这是我目前的解决方案,但必须有一种更优雅的方式来做到这一点**
$moduleName = $this->getRequest()->getModuleName();
$controllerName = $this->getRequest()->getControllerName();
$actionName = $this->getRequest()->getActionName();
$paramArray = $this->getRequest()->getParams();
$params = '';
foreach($paramArray as $key => $value)
if($key <> "module" && $key <> "controller" && $key <> "action")
$params .= $key . "/" . $value . "/";
$this->_redirect('/admin/login/?redirect=' . $moduleName . "/" . $controllerName . "/" . $actionName . "/" . $params);
【问题讨论】:
标签: php zend-framework