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
|
|
函数的原型是
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,是否传递参数