0

如何在 Recess Framework 上添加 HTTP 标头。

我试试这个。

header('HTTP/1.1 204 无内容');

但它不起作用。

谢谢。

4

1 回答 1

0

在这种情况下,为特定响应添加 HTTP 标头的最佳方法是创建新的响应类型。这将让您以正常方式从控制器方法返回(如 return $this->ok())并让框架添加标题。我敢打赌,您的 Recess 版本有 No Content 响应,但它不在 AbstractController 中,因此您无法访问它。请按照以下步骤进行检查。

查看凹槽/目录。我们将修改几个文件。

首先,创建recess/http/responses/NoContentResponse.class.php 文件,如果它不存在(它很可能存在于您的版本中)。使用此代码:

<?php
Library::import('recess.http.Response');
Library::import('recess.http.ResponseCodes');

class NoContentResponse extends Response {
    public function __construct(Request $request) {
    parent::__construct($request, ResponseCodes::HTTP_NO_CONTENT, 
                 ResponseCodes::getMessageForCode(ResponseCodes::HTTP_NO_CONTENT));
    }
}
?>

确保 HTTP_NO_CONTENT 响应代码在凹槽/http/ResponseCodes.class.php 文件中(它应该已经在其中)。

现在,您需要确保可以从控制器访问响应。将以下代码添加到凹槽/框架/AbstractController.class.php 文件中:

protected function noContent() {
    Library::import('recess.http.responses.NoContentResponse');
    $response = new NoContentResponse($this->request);
    return $response;
}

这将让您从控制器返回 $this->noContent() ,就像任何其他响应一样。祝你好运!

于 2012-06-29T03:00:40.053 回答