0

Recess Framework に HTTP ヘッダーを追加するにはどうすればよいですか。

私はこれを試します。

header('HTTP/1.1 204 No Content');

しかし、それは機能していません。

ありがとう。

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 応答コードがrecess/http/ResponseCodes.class.phpファイルにあることを確認してください(すでにそこにあるはずです)。

ここで、コントローラーから応答にアクセスできることを確認する必要があります。以下のコードを reduction/framework/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 に答える