Je vois cette question est étiquetée avec symfony1, mais ma réponse a été testé sur Symfony 2.8. Une solution similaire est probablement possible avec Symfony 1.X.
Lors de la configuration de code d'état d'une réponse avec $response->setStatusCode()
, Symfony préformes un check to confirm que le code d'état fourni est valide selon RFC 2616 - en particulier, qu'elle est comprise entre 100 - 600:
public function isInvalid()
{
return $this->statusCode < 100 || $this->statusCode >= 600;
}
Comme autre les réponses ont dit, 24 est hors de cette plage et un exception will be thrown as a result. En utilisant ce code d'état vous n'êtes pas conforme aux normes de HTTP et tout client normal peut ne pas fonctionner comme prévu. Cela dit, Je ne suis pas ici pour juger de votre expérience et une solution est disponible.
Vous pouvez créer une sous-classe de Response
où vous remplacez isInvalid()
pour toujours renvoyer false, ce qui permet de définir tous les codes d'état.
<?php
namespace AppBundle;
use Symfony\Component\HttpFoundation\Response;
class NewResponse extends Response
{
public function isInvalid()
{
//Accept anything.
return false;
}
}
Utilisez cette classe au lieu de saisir une norme Response
:
/**
* @Route("/", name="homepage")
*/
public function indexAction(Request $request)
{
$response = new NewResponse();
$response->setStatusCode(24);
return $response;
}
résultats à obtenir le code de statut que vous êtes après:
$ 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
Ne fais pas ça, ce n'est pas un valeur valide pour un code HTTP. –