分享

YII路由跳转forward\redirect

 朱启发 2014-11-19

关于Yii中的url的跳转,有两个方法,第一个是Redirect,第二个是Forward

Yii的Rediret

使用方法 

$this->redirect(array('index'));

对应的是当前controller的index action 

http://www./testwebap/index.php?r=user/index
$this->redirect(array('view','id'=>$model->id));

对应的是当前controller的view action并传递id参数值为3 

http://www./testwebap/index.php?r=user/view&id=3 

$this->redirect(array('/site/contact','id'=>12));
$this->redirect(array('site/contact','id'=>12));

http://www./testwebap/index.php?r=site/contact&id=12 

$this->redirect(array('site/contact','id'=>'idv','name'=>'namev'));

http://www./testwebap/index.php?r=site/contact&id=idv&name=namev 

$this->redirect(array('site/contact','v1','v2','v3'));

http://www./testwebap/index.php?r=site/contact&0=v1&1=v2&2=v3 

$this->redirect(array('site/contact','v1','v2','v3','#'=>'ttt'));

带anchor的 
http://www./testwebap/index.php?r=site/contact&0=v1&1=v2&2=v3#ttt 

$this->redirect(array('user/create','v1','v2','v3','#'=>'ttt'));

http://www./testwebap/index.php?r=user/create&0=v1&1=v2&2=v3#ttt 
modules的redirect

$this->redirect(array('testmod/default/index','v1','v2','v3','#'=>'ttt'));

http://www./testwebap/index.php?r=testmod/default/index&0=v1&1=v2&2=v3#ttt 
跳转到一个绝对路径 

$this->redirect('http://www.baidu.com');

函数的原型是

public function redirect($url,$terminate=true,$statusCode=302)
{
    if(strpos($url,'/')===0)
        $url=$this->getHostInfo().$url;
    header('Location: '.$urltrue$statusCode);
    if($terminate)
        Yii::app()->end();
}

YII的forward

$this->forward('/testmod/default/index'); 

$this->forward('testmod/default/index'); 

地址栏url 

http://www./testwebap/index.php    
forward是不需要参数的 

函数的原型是:

public function forward($route,$exit=true)
{
    if(strpos($route,'/')===false)
        $this->run($route);
    else
    {
        if($route[0]!=='/' && ($module=$this->getModule())!==null)
            $route=$module->getId().'/'.$route;
        Yii::app()->runController($route);
    }
    if($exit)
        Yii::app()->end();
}

forward和redirect的区别显而易见

1,浏览器url地址

2,是否支持绝对地址

3,是否传递参数


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多