YII路由跳转forward\redirect

Yii的Rediret

使用方法

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

对应的是当前controller的index action

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

函数的原型是

1
2
3
4
5
6
7
8
public  function  redirect( $url , $terminate =true, $statusCode =302)
{
     if ( strpos ( $url , '/' )===0)
         $url = $this ->getHostInfo(). $url ;
     header( 'Location: ' . $url , true,  $statusCode );
     if ( $terminate )
         Yii::app()-> end ();
}

YII的forward

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

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

地址栏url 

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

函数的原型是:

1
2
3
4
5
6
7
8
9
10
11
12
13
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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值