zoukankan      html  css  js  c++  java
  • 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参数记录下跳转前的地址

  • 相关阅读:
    mysql 备份脚本
    (四)监控cpu
    (三)修改图形乱码问题
    (二)centos7安装zabbix agentd端
    (一)Centos7安装zabbix3.4 server端
    (五)条件测试
    (四)mysql数据类型
    (三)mysql数据库基本操作
    (二)mysql忘记root密码
    (五)cobbler自定义系统安装
  • 原文地址:https://www.cnblogs.com/ldms/p/3045491.html
Copyright © 2011-2022 走看看