yii中设置返回上一页的地址returnUrl
2013-03-23 14:04:32| 分类: yii之全局调用 |字号 订阅
yii中设置返回操作前的地址:
一、利用yii中的setReturnUrl和getReturnUrl方法
yii中如果需要重定向跳转前的地址,可以利用CwebUser中的setReturnUrl()先方法设置,然后跳转后再用getReturnUrl()获得设置的这个地址,跳回去,不会自动跳转。
public function setReturnUrl($value)
{
$this->setState('__returnUrl',$value);
}
//返回用户成功登陆后应该跳转的URL。这个属性常用于登陆动作。如果成功登陆,将读取这个属性,然后用它来重定向用户的浏览器。
//$defaultUrl默认的要返回的URL,如果之前没有设置的话。如果是null,应用入口的URL将被作为默认返回的URL。
public function getReturnUrl($defaultUrl=null)
{
return $this->getState('__returnUrl', $defaultUrl===null ? Yii::app()->getRequest()->getScriptUrl() : CHtml::normalizeUrl($defaultUrl));
}
getScriptUrl():返回入口文件的Url
以CWebUser中的loginRequired方法为例:
public function loginRequired()
{
$app=Yii::app();
$request=$app->getRequest();
if(!$request->getIsAjaxRequest())
$this->setReturnUrl($request->getUrl()); //先设置返回的地址
elseif(isset($this->loginRequiredAjaxResponse))
{
echo $this->loginRequiredAjaxResponse;
Yii::app()->end();
}
if(($url=$this->loginUrl)!==null)
{
if(is_array($url))
{
$route=isset($url[0]) ? $url[0] : $app->defaultController;
$url=$app->createUrl($route,array_splice($url,1));
}
$request->redirect($url);
}
else
throw new CHttpException(403,Yii::t('yii','Login Required'));
}
重定向用户浏览器到登陆页面。重定向之前,当前的URL(如果不是一个AJAX url)将被保存在 returnUrl中,以便用户的浏览器可能会被重定向去到成功登录后的页面。确保你设置了loginUrl 使用户调用此方法后可以被重定向到指定的登录地址调用此方法后,将终止当前的语录处理。
二、利用传统方法在网址后传入一个reffer参数记录下跳转前的地址