diff --git a/src/Symfony/Component/DomCrawler/Form.php b/src/Symfony/Component/DomCrawler/Form.php index a235f953cc..b620d6290e 100644 --- a/src/Symfony/Component/DomCrawler/Form.php +++ b/src/Symfony/Component/DomCrawler/Form.php @@ -103,7 +103,7 @@ class Form extends Link implements \ArrayAccess */ public function getFiles() { - if (!in_array($this->getMethod(), array('POST', 'PUT', 'DELETE'))) { + if (!in_array($this->getMethod(), array('POST', 'PUT', 'DELETE', 'PATCH'))) { return array(); } @@ -173,7 +173,7 @@ class Form extends Link implements \ArrayAccess { $uri = parent::getUri(); - if (!in_array($this->getMethod(), array('POST', 'PUT', 'DELETE')) && $queryString = http_build_query($this->getValues(), null, '&')) { + if (!in_array($this->getMethod(), array('POST', 'PUT', 'DELETE', 'PATCH')) && $queryString = http_build_query($this->getValues(), null, '&')) { $sep = false === strpos($uri, '?') ? '?' : '&'; $uri .= $sep.$queryString; } @@ -576,4 +576,4 @@ class FormFieldRegistry throw new \InvalidArgumentException(sprintf('Malformed field path "%s"', $name)); } -} \ No newline at end of file +} diff --git a/tests/Symfony/Tests/Component/DomCrawler/FormTest.php b/tests/Symfony/Tests/Component/DomCrawler/FormTest.php index 01df4444b5..f36113eb7f 100644 --- a/tests/Symfony/Tests/Component/DomCrawler/FormTest.php +++ b/tests/Symfony/Tests/Component/DomCrawler/FormTest.php @@ -202,6 +202,12 @@ class FormTest extends \PHPUnit_Framework_TestCase $form = $this->createForm('
', 'put'); $this->assertEquals('PUT', $form->getMethod(), '->getMethod() returns the method defined in the constructor if provided'); + + $form = $this->createForm('
', 'delete'); + $this->assertEquals('DELETE', $form->getMethod(), '->getMethod() returns the method defined in the constructor if provided'); + + $form = $this->createForm('
', 'patch'); + $this->assertEquals('PATCH', $form->getMethod(), '->getMethod() returns the method defined in the constructor if provided'); } public function testGetSetValue() @@ -278,7 +284,16 @@ class FormTest extends \PHPUnit_Framework_TestCase $this->assertEquals(array(), $form->getFiles(), '->getFiles() returns an empty array if method is get'); $form = $this->createForm('
'); - $this->assertEquals(array('foo[bar]' => array('name' => '', 'type' => '', 'tmp_name' => '', 'error' => 4, 'size' => 0)), $form->getFiles(), '->getFiles() only returns file fields'); + $this->assertEquals(array('foo[bar]' => array('name' => '', 'type' => '', 'tmp_name' => '', 'error' => 4, 'size' => 0)), $form->getFiles(), '->getFiles() only returns file fields for POST'); + + $form = $this->createForm('
', 'put'); + $this->assertEquals(array('foo[bar]' => array('name' => '', 'type' => '', 'tmp_name' => '', 'error' => 4, 'size' => 0)), $form->getFiles(), '->getFiles() only returns file fields for PUT'); + + $form = $this->createForm('
', 'delete'); + $this->assertEquals(array('foo[bar]' => array('name' => '', 'type' => '', 'tmp_name' => '', 'error' => 4, 'size' => 0)), $form->getFiles(), '->getFiles() only returns file fields for DELETE'); + + $form = $this->createForm('
', 'patch'); + $this->assertEquals(array('foo[bar]' => array('name' => '', 'type' => '', 'tmp_name' => '', 'error' => 4, 'size' => 0)), $form->getFiles(), '->getFiles() only returns file fields for PATCH'); $form = $this->createForm('
'); $this->assertEquals(array(), $form->getFiles(), '->getFiles() does not include disabled file fields'); @@ -293,9 +308,9 @@ class FormTest extends \PHPUnit_Framework_TestCase /** * @dataProvider provideGetUriValues */ - public function testGetUri($message, $form, $values, $uri) + public function testGetUri($message, $form, $values, $uri, $method = null) { - $form = $this->createForm($form); + $form = $this->createForm($form, $method); $form->setValues($values); $this->assertEquals('http://example.com'.$uri, $form->getUri(), '->getUri() '.$message); @@ -387,6 +402,27 @@ class FormTest extends \PHPUnit_Framework_TestCase array(), '/foo' ), + array( + 'does not append values if the method is patch', + '
', + array(), + '/foo', + 'PUT' + ), + array( + 'does not append values if the method is delete', + '
', + array(), + '/foo', + 'DELETE' + ), + array( + 'does not append values if the method is put', + '
', + array(), + '/foo', + 'PATCH' + ), array( 'appends the form values to an existing query string', '
',