Fixes #1844: Calling Response::sendFile() would cause sending the response twice

This commit is contained in:
Qiang Xue
2014-01-08 20:57:36 -05:00
parent 4609a94dbf
commit 50703f8a82
2 changed files with 11 additions and 0 deletions

View File

@@ -24,6 +24,7 @@ Yii Framework 2 Change Log
- Bug #1798: Fixed label attributes for array fields (zhuravljov)
- Bug #1800: Better check for `$_SERVER['HTTPS']` in `yii\web\Request::getIsSecureConnection()` (ginus, samdark)
- Bug #1827: Debugger toolbar is loaded twice if an action is calling `run()` to execute another action (qiangxue)
- Bug #1844: Calling `Response::sendFile()` would cause sending the response twice (qiangxue)
- Bug: Fixed `Call to a member function registerAssetFiles() on a non-object` in case of wrong `sourcePath` for an asset bundle (samdark)
- Bug: Fixed incorrect event name for `yii\jui\Spinner` (samdark)
- Bug: Json::encode() did not handle objects that implement JsonSerializable interface correctly (cebe)

View File

@@ -135,6 +135,10 @@ class Response extends \yii\base\Response
* or '1.1' if that is not available.
*/
public $version;
/**
* @var boolean whether the response has been sent. If this is true, calling [[send()]] will do nothing.
*/
public $isSent = false;
/**
* @var array list of HTTP status codes and the corresponding texts
*/
@@ -281,6 +285,11 @@ class Response extends \yii\base\Response
*/
public function send()
{
if ($this->isSent) {
return;
} else {
$this->isSent = true;
}
$this->trigger(self::EVENT_BEFORE_SEND);
$this->prepare();
$this->trigger(self::EVENT_AFTER_PREPARE);
@@ -300,6 +309,7 @@ class Response extends \yii\base\Response
$this->statusText = 'OK';
$this->data = null;
$this->content = null;
$this->isSent = false;
}
/**