2010-12-09 7 views
7

में (उदाहरण के 24 के लिए) विशिष्ट कोड लौटाने पर मैंकैसे सिम्फोनी

मैं स्थिति कोड 24 वापस जाने के लिए की जरूरत है मैं के साथ यह करने की कोशिश सिम्फोनी में एपीआई के लिए पागल हो http कोड स्थितियों वापस जाने के लिए की जरूरत है:

$this->getResponse()->setStatusCode('24'); 

लेकिन जब मैं वापस जाने के लिए 404 की तरह "सामान्य" स्थिति कोड की कोशिश मैं हमेशा प्रतिक्रिया कोड 500

हो रही है, 403:

$this->getResponse()->setStatusCode('403'); 

इसमें कोई समस्या नहीं है

कोई विचार क्यों?

उत्तर

0

मेरा अनुमान होगा कोई official status code 24.

की Symfony आंतरिक कि जाँच कर सकते हैं।

इसके चारों ओर पाने के लिए, तुम कर सकते हो ...

header('HTTP/1.0 24'); 
1

मैं एक समाधान नहीं मिला, यह 3 अंक

$this->getResponse()->setStatusCode('024'); 

इसी तरह हैडर समारोह में होना आवश्यक है

header('HTTP/1.0 024'); 
+9

कि ऐसा मत करो, यह एक है: स्थिति कोड प्राप्त करने में

/** * @Route("/", name="homepage") */ public function indexAction(Request $request) { $response = new NewResponse(); $response->setStatusCode(24); return $response; } 

परिणाम आप के बाद कर रहे हैं एक HTTP कोड के लिए वैध मान। –

7

024 एक अमान्य HTTP कोड (यह "अपरिभाषित" से अलग है)। मान्य HTTP कोड 100-599 रेंज में हैं।

1

मुझे यह प्रश्न के साथ टैग किया गया है, हालांकि मेरा जवाब सिम्फनी 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 
+0

अच्छे विचार के लिए धन्यवाद! बहुत आसन... –

संबंधित मुद्दे