मुझे यह प्रश्न symfony1 के साथ टैग किया गया है, हालांकि मेरा जवाब सिम्फनी 2.8 पर परीक्षण किया गया था। Symfony 1.X के साथ एक समान समाधान संभव है।
$response->setStatusCode()
साथ एक प्रतिक्रिया की स्थिति कोड सेट करते समय, Symfony एक check to confirm कि प्रदान की स्थिति कोड RFC 2616 के अनुसार मान्य है preforms - 600 - विशेष रूप से, यह है कि 100 के बीच:
public function isInvalid()
{
return $this->statusCode < 100 || $this->statusCode >= 600;
}
अन्य के रूप में
उत्तरों ने कहा है, 24 इस सीमा से बाहर है और
exception will be thrown as a result है। इस स्थिति कोड का उपयोग करके आप HTTP मानकों का पालन नहीं कर रहे हैं और किसी भी सामान्य ग्राहक अपेक्षा के अनुसार काम नहीं कर सकता है। उस ने कहा,
मैं आपके प्रयोग का न्याय करने के लिए यहां नहीं हूं और एक समाधान उपलब्ध है।
आप Response
का उप-वर्ग बना सकते हैं जहां आप हमेशा झूठी वापसी के लिए isInvalid()
ओवरराइड करते हैं, इस प्रकार किसी भी और सभी स्टेटस कोड सेट किए जाने की अनुमति देते हैं।इस वर्ग के
<?php
namespace AppBundle;
use Symfony\Component\HttpFoundation\Response;
class NewResponse extends Response
{
public function isInvalid()
{
//Accept anything.
return false;
}
}
उपयोग बजाय हथियाने के लिए एक मानक Response
की:
$ curl -I 127.0.0.1:8000
HTTP/1.1 24 unknown status
Host: 127.0.0.1:8000
Connection: close
X-Powered-By: PHP/5.6.10
Cache-Control: no-cache
Content-Type: text/html; charset=UTF-8
X-Debug-Token: 189e2d
X-Debug-Token-Link: /_profiler/189e2d
Date: Fri, 29 Jan 2016 22:23:29 GMT
कि ऐसा मत करो, यह एक है: स्थिति कोड प्राप्त करने में
परिणाम आप के बाद कर रहे हैं एक HTTP कोड के लिए वैध मान। –