Yii2 响应部分 response

当应用完成处理一个请求后, 会生成一个yiiwebResponse响应对象并发送给终端用户 响应对象包含的信息有HTTP状态码,HTTP头和主体内容等, 网页应用开发的最终目的本质上就是根据不同的请求构建这些响应对象。
设置状态码

基本上我们并不会直接去设置网页的状态码,所以了解一下就可以了。

Yii::$app->response->statusCode = 404;

    1

    1

HTTP 头部

Yii 提供了比较简易操作 Http 头部的方法。

$headers = Yii::$app->response->headers;

// 增加一个 Pragma 头,已存在的Pragma 头不会被覆盖。
$headers->add('Pragma', 'no-cache');

// 设置一个Pragma 头. 任何已存在的Pragma 头都会被丢弃
$headers->set('Pragma', 'no-cache');

// 删除Pragma 头并返回删除的Pragma 头的值到数组
$values = $headers->remove('Pragma');

// 获取头部信息的个数
$headers->count();

// 获取已经存在 Pragma 属性的值
$headers->get('Pragma');

// 增加一个 Pragma 头的默认值,如果 Pragma 头已经存在,则不会增加。
$headers->setDefault('Pragma', 'no-cache');

// 查看 Pragma 头是否存在,返回boolean值
$headers->has('Pragma');

// 移除目前存在的所有头部信息
$headers->removeAll();

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25

浏览器跳转

下面列出来的这两个跳转蛮常用的,所以一定要记住

public function actionIndex(){
    // 操作方法内调用
    $this->redirect('http://www.yiichina.com/' , 301);
}

// 如果需要在操作方法外面使用
yii::$app->response->redirect('http://www.baidu.com/');

    1
    2
    3
    4
    5
    6
    7

    1
    2
    3
    4
    5
    6
    7

当然Yii也提供了其他的跳转方式,手册没有列出来

public function actionIndex(){
    // 跳转到首页
    $this->goHome();

    // 返回上一页
    $this->goBack();

    // 刷新页面
    $this->refresh();

    // 当然这些跳转方式不必非要在操作方法内使用,根据自己的需求去调用。
}

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

发送文件

yii提供了多种发送文件的模式,基本上已经满足用户的需求了。

public function actionIndex(){
    // 发送一个已存在的文件到客户端
    return Yii::$app->response->sendFile('./robots.txt');
    // 发送一个文本字符串作为文件到客户端
    return Yii::$app->response->sendContentAsFile('i love you','yyy.log');
}
// 如果不是在操作方法之内调用,没办法return,yii也追加了此方法
Yii::$app->response->sendFile('./robots.txt')->send();
原文地址:https://www.cnblogs.com/wuheng1991/p/7389752.html