一、yii2 request操作
Yii::
a
p
p
−
>
r
e
q
u
e
s
t
−
>
g
e
t
(
)
;
/
/
等
价
于
:
app->request->get();//等价于:
app−>request−>get();//等价于:_GET;
Yii::
a
p
p
−
>
r
e
q
u
e
s
t
−
>
p
o
s
t
(
)
;
/
/
等
价
于
:
app->request->post();//等价于:
app−>request−>post();//等价于:_POST;
Yii::
a
p
p
−
>
r
e
q
u
e
s
t
−
>
g
e
t
(
′
i
d
′
)
;
/
/
等
价
于
:
i
s
s
e
t
(
app->request->get('id'); //等价于:isset(
app−>request−>get(′id′);//等价于:isset(_GET[‘id’]) ?
G
E
T
[
′
i
d
′
]
:
n
u
l
l
;
Y
i
i
:
:
_GET['id'] : null; Yii::
GET[′id′]:null;Yii::app->request->get('id’,1); //等价于:isset($_GET[‘id’]) ?
G
E
T
[
′
i
d
′
]
:
1
;
/
/
取
得
请
求
中
的
所
有
参
数
Y
i
i
:
:
_GET['id'] : 1; // 取得请求中的所有参数 Yii::
GET[′id′]:1;//取得请求中的所有参数Yii::app->request->bodyParams;
取得请求中的参数 “id”
Yii::
a
p
p
−
>
r
e
q
u
e
s
t
−
>
g
e
t
B
o
d
y
P
a
r
a
m
(
′
i
d
′
)
;
/
/
判
断
是
否
一
个
A
J
A
X
请
求
Y
i
i
:
:
app->request->getBodyParam('id'); //判断是否一个 AJAX 请求 Yii::
app−>request−>getBodyParam(′id′);//判断是否一个AJAX请求Yii::app->request->isAjax
//判断是否一个 GET 请求
Yii::
a
p
p
−
>
r
e
q
u
e
s
t
−
>
i
s
G
e
t
/
/
判
断
是
否
一
个
P
O
S
T
请
求
Y
i
i
:
:
app->request->isGet //判断是否一个 POST 请求 Yii::
app−>request−>isGet//判断是否一个POST请求Yii::app->request->isPost
//判断是否一个 PUT 请求
Yii::$app->request->isPut
// 返回 Accept header 值,其中Yii::$app->request->headers是一个 yii\web\HeaderCollection 对象
a
c
c
e
p
t
=
Y
i
i
:
:
accept = Yii::
accept=Yii::app->request->headers->get(‘Accept’);
// 判断是否头部是否有User-Agent 头
Yii::$app->request->has('User-Agent’);
获取客户端的host name
Yii::
a
p
p
−
>
r
e
q
u
e
s
t
−
>
u
s
e
r
H
o
s
t
;
获
取
客
户
端
的
I
P
地
址
Y
i
i
:
:
app->request->userHost; 获取客户端的IP地址 Yii::
app−>request−>userHost;获取客户端的IP地址Yii::app->request->userIP;
二、yii2 response操作
==响应头部:Yii::
a
p
p
−
>
r
e
s
p
o
n
s
e
−
>
h
e
a
d
e
r
s
;
/
/
增
加
一
个
P
r
a
g
m
a
头
,
已
存
在
的
P
r
a
g
m
a
头
不
会
被
覆
盖
。
Y
i
i
:
:
app->response->headers; // 增加一个 Pragma 头,已存在的Pragma 头不会被覆盖。 Yii::
app−>response−>headers;//增加一个Pragma头,已存在的Pragma头不会被覆盖。Yii::app->response->headers->add(‘Pragma’, ‘no-cache’);
// 设置一个Pragma 头. 任何已存在的Pragma 头都会被丢弃
Yii::$app->response->headers->set(‘Pragma’, ‘no-cache’);
// 删除Pragma 头并返回删除的Pragma 头的值到数组
Yii::$app->response->headers->remove(‘Pragma’);
==响应主体:Yii:: a p p − > r e s p o n s e − > c o n t e n t ; / / 设 置 相 应 主 体 的 内 容 Y i i : : app->response->content; //设置相应主体的内容 Yii:: app−>response−>content;//设置相应主体的内容Yii::app->response->content = ‘hello world!’;
//在发送响应给终端用户之前需要格式化
Yii::KaTeX parse error: Expected 'EOF', got '\yii' at position 25: …onse->format = \̲y̲i̲i̲\web\Response::…app->response->data = [‘message’ => ‘hello world’];
因为响应格式默认为HTML, 只需要在操作方法中返回一个字符串,
如果想使用其他响应格式,应在返回数据前先设置格式, 例如返回json串:
public function actionInfo()
{
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
return [
‘message’ => ‘hello world’,
‘code’ => 100,
];
}
//浏览器跳转
return KaTeX parse error: Expected 'EOF', got '\Yii' at position 100: …追加到响应中。 return \̲Y̲i̲i̲::app->response->redirect(‘http://example.com/new’, 301)->send();
//发送文件提供在浏览器上下载
return \Yii::KaTeX parse error: Expected 'EOF', got '\Yii' at position 95: …追加到响应中。 return \̲Y̲i̲i̲::app->response->sendFile(‘path/to/file.txt’)->send();
三、yii2 session操作
// 检查session是否开启
Yii::$app->session->isActive;
// 开启session
Yii::$app->session->open();
// 关闭session
Yii::$app->session->close();
// 销毁session中所有已注册的数据
Yii::$app->session->destroy();
// 检查session变量是否已存在,以下用法是相同的:
if (Yii::
a
p
p
−
>
s
e
s
s
i
o
n
−
>
h
a
s
(
′
l
a
n
g
u
a
g
e
′
)
)
.
.
.
i
f
(
i
s
s
e
t
(
Y
i
i
:
:
app->session->has('language')) ... if (isset(Yii::
app−>session−>has(′language′))...if(isset(Yii::app->session[‘language’])) …
if (isset($_SESSION[‘language’])) …
// 获取session中的变量值,以下用法是相同的:
l
a
n
g
u
a
g
e
=
Y
i
i
:
:
language = Yii::
language=Yii::app->session->get(‘language’);
l
a
n
g
u
a
g
e
=
Y
i
i
:
:
language =Yii::
language=Yii::app->session['language’];//??待验证
l
a
n
g
u
a
g
e
=
i
s
s
e
t
(
language = isset(
language=isset(_SESSION[‘language’]) ? $_SESSION[‘language’] : null;
// 设置一个session变量,以下用法是相同的:
Yii::
a
p
p
−
>
s
e
s
s
i
o
n
−
>
s
e
t
(
′
l
a
n
g
u
a
g
e
′
,
′
e
n
−
U
S
′
)
;
Y
i
i
:
:
app->session->set('language', 'en-US'); Yii::
app−>session−>set(′language′,′en−US′);Yii::app->session[‘language’] = ‘en-US’;
$_SESSION[‘language’] = ‘en-US’;
// 删除一个session变量,以下用法是相同的:
Yii::
a
p
p
−
>
s
e
s
s
i
o
n
−
>
r
e
m
o
v
e
(
′
l
a
n
g
u
a
g
e
′
)
;
u
n
s
e
t
(
app->session->remove('language'); unset(
app−>session−>remove(′language′);unset(Yii::
a
p
p
−
>
s
e
s
s
i
o
n
[
′
l
a
n
g
u
a
g
e
′
]
)
;
u
n
s
e
t
(
app->session['language']); unset(
app−>session[′language′]);unset(_SESSION[‘language’]);
// 遍历所有session变量,以下用法是相同的:
foreach (Yii::$app->session as $name =>
v
a
l
u
e
)
.
.
.
f
o
r
e
a
c
h
(
value) ... foreach (
value)...foreach(_SESSION as $name => $value) …