[HttpFoundation] allow _method to be set in the query string (closes #4202)

This commit is contained in:
Fabien Potencier 2012-07-10 22:17:24 +02:00
parent 9a2c61780b
commit 064ad6255c
2 changed files with 6 additions and 1 deletions

View File

@ -925,7 +925,7 @@ class Request
if (null === $this->method) {
$this->method = strtoupper($this->server->get('REQUEST_METHOD', 'GET'));
if ('POST' === $this->method) {
$this->method = strtoupper($this->headers->get('X-HTTP-METHOD-OVERRIDE', $this->request->get('_method', 'POST')));
$this->method = strtoupper($this->headers->get('X-HTTP-METHOD-OVERRIDE', $this->request->get('_method', $this->query->get('_method', 'POST'))));
}
}

View File

@ -620,6 +620,11 @@ class RequestTest extends \PHPUnit_Framework_TestCase
$request->request->set('_method', 'purge');
$this->assertEquals('PURGE', $request->getMethod(), '->getMethod() returns the method from _method if defined and POST');
$request->setMethod('POST');
$request->request->remove('_method');
$request->query->set('_method', 'purge');
$this->assertEquals('PURGE', $request->getMethod(), '->getMethod() returns the method from _method if defined and POST');
$request->setMethod('POST');
$request->headers->set('X-HTTP-METHOD-OVERRIDE', 'delete');
$this->assertEquals('DELETE', $request->getMethod(), '->getMethod() returns the method from X-HTTP-Method-Override even though _method is set if defined and POST');