yii2的请求(request)、响应与跳转(response)、缓存(session)常用操作

一、yii2 request操作
Yii::$app->request->get();//等价于:$_GET;
Yii::$app->request->post();//等价于:$_POST;
Yii::$app->request->get('id'); //等价于:isset($_GET['id']) ? $_GET['id'] : null;
Yii::$app->request->get('id’,1); //等价于:isset($_GET['id']) ? $_GET['id'] : 1;
// 取得请求中的所有参数
Yii::$app->request->bodyParams;
//// 取得请求中的参数 "id"
Yii::$app->request->getBodyParam('id'); 
//判断是否一个 AJAX 请求
Yii::$app->request->isAjax
//判断是否一个 GET 请求
Yii::$app->request->isGet
//判断是否一个 POST 请求
Yii::$app->request->isPost
//判断是否一个 PUT 请求
Yii::$app->request->isPut


// 返回 Accept header 值,其中Yii::$app->request->headers是一个 yii\web\HeaderCollection 对象
$accept = Yii::$app->request->headers->get('Accept');
// 判断是否头部是否有User-Agent 头
Yii::$app->request->has('User-Agent’);


获取客户端的host name
Yii::$app->request->userHost;
获取客户端的IP地址
Yii::$app->request->userIP;


二、yii2 response操作
////==响应头部: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::$app->response->content;
//设置相应主体的内容
Yii::$app->response->content = 'hello world!';


//在发送响应给终端用户之前需要格式化
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
Yii::$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 $this->redirect('http://example.com/new', 301);
//可直接调用redirect()再调用send()方法来确保没有其他内容追加到响应中。
return \Yii::$app->response->redirect('http://example.com/new', 301)->send();
//发送文件提供在浏览器上下载
return \Yii::$app->response->sendFile('path/to/file.txt');
//发送文件提供在浏览器上下载,并用send()方法确保没有其他内容追加到响应中。
return \Yii::$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::$app->session->has('language')) ...
if (isset(Yii::$app->session['language'])) ...
if (isset($_SESSION['language'])) ...


// 获取session中的变量值,以下用法是相同的:
$language = Yii::$app->session->get('language');
$language =Yii::$app->session['language’];//??待验证
$language = isset($_SESSION['language']) ? $_SESSION['language'] : null;


// 设置一个session变量,以下用法是相同的:
Yii::$app->session->set('language', 'en-US');
Yii::$app->session['language'] = 'en-US';
$_SESSION['language'] = 'en-US';


// 删除一个session变量,以下用法是相同的:
Yii::$app->session->remove('language');
unset($Yii::$app->session['language']);
unset($_SESSION['language']);


// 遍历所有session变量,以下用法是相同的:
foreach (Yii::$app->session as $name => $value) ...
foreach ($_SESSION as $name => $value) ...

---------------------
作者:筑梦悠然
来源:CSDN
原文:https://blog.csdn.net/wuhuagu_wuhuaguo/article/details/79997786
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自www.cnblogs.com/shantianle/p/10099070.html