[Form] Added support for PATCH requests
This commit is contained in:
parent
e9b6c7c2a4
commit
eabb7a17ed
@ -358,13 +358,14 @@ class Button implements \IteratorAggregate, FormInterface
|
||||
/**
|
||||
* Submits data to the button.
|
||||
*
|
||||
* @param null|string $submittedData The data
|
||||
* @param null|string $submittedData The data.
|
||||
* @param Boolean $clearMissing Not used.
|
||||
*
|
||||
* @return Button The button instance
|
||||
*
|
||||
* @throws Exception\AlreadySubmittedException If the button has already been submitted.
|
||||
*/
|
||||
public function submit($submittedData)
|
||||
public function submit($submittedData, $clearMissing = true)
|
||||
{
|
||||
if ($this->submitted) {
|
||||
throw new AlreadySubmittedException('A form can only be submitted once');
|
||||
|
@ -24,6 +24,7 @@ CHANGELOG
|
||||
* added methods submit() and isSubmitted() to Form
|
||||
* deprecated bind() and isBound() in Form
|
||||
* deprecated AlreadyBoundException in favor of AlreadySubmittedException
|
||||
* added support for PATCH requests
|
||||
|
||||
2.2.0
|
||||
-----
|
||||
|
@ -75,6 +75,6 @@ class HttpFoundationRequestHandler implements RequestHandlerInterface
|
||||
return;
|
||||
}
|
||||
|
||||
$form->submit($data);
|
||||
$form->submit($data, 'PATCH' !== $method);
|
||||
}
|
||||
}
|
||||
|
@ -464,7 +464,7 @@ class Form implements \IteratorAggregate, FormInterface
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function submit($submittedData)
|
||||
public function submit($submittedData, $clearMissing = true)
|
||||
{
|
||||
if ($this->submitted) {
|
||||
throw new AlreadySubmittedException('A form can only be submitted once');
|
||||
@ -518,8 +518,10 @@ class Form implements \IteratorAggregate, FormInterface
|
||||
}
|
||||
|
||||
foreach ($this->children as $name => $child) {
|
||||
$child->submit(isset($submittedData[$name]) ? $submittedData[$name] : null);
|
||||
unset($submittedData[$name]);
|
||||
if (isset($submittedData[$name]) || $clearMissing) {
|
||||
$child->submit(isset($submittedData[$name]) ? $submittedData[$name] : null, $clearMissing);
|
||||
unset($submittedData[$name]);
|
||||
}
|
||||
}
|
||||
|
||||
$this->extraData = $submittedData;
|
||||
|
@ -242,13 +242,16 @@ interface FormInterface extends \ArrayAccess, \Traversable, \Countable
|
||||
/**
|
||||
* Submits data to the form, transforms and validates it.
|
||||
*
|
||||
* @param null|string|array $submittedData The submitted data.
|
||||
* @param null|string|array $submittedData The submitted data.
|
||||
* @param Boolean $clearMissing Whether to set fields to NULL
|
||||
* when they are missing in the
|
||||
* submitted data.
|
||||
*
|
||||
* @return FormInterface The form instance
|
||||
*
|
||||
* @throws Exception\AlreadySubmittedException If the form has already been submitted.
|
||||
*/
|
||||
public function submit($submittedData);
|
||||
public function submit($submittedData, $clearMissing = true);
|
||||
|
||||
/**
|
||||
* Returns the root of the form tree.
|
||||
|
@ -90,7 +90,7 @@ class NativeRequestHandler implements RequestHandlerInterface
|
||||
return;
|
||||
}
|
||||
|
||||
$form->submit($data);
|
||||
$form->submit($data, 'PATCH' !== $method);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -34,15 +34,16 @@ class SubmitButton extends Button implements ClickableInterface
|
||||
/**
|
||||
* Submits data to the button.
|
||||
*
|
||||
* @param null|string $submittedData The data
|
||||
* @param null|string $submittedData The data.
|
||||
* @param Boolean $clearMissing Not used.
|
||||
*
|
||||
* @return SubmitButton The button instance
|
||||
*
|
||||
* @throws Exception\AlreadySubmittedException If the form has already been submitted.
|
||||
*/
|
||||
public function submit($submittedData)
|
||||
public function submit($submittedData, $clearMissing = true)
|
||||
{
|
||||
parent::submit($submittedData);
|
||||
parent::submit($submittedData, $clearMissing);
|
||||
|
||||
$this->clicked = null !== $submittedData;
|
||||
|
||||
|
@ -58,8 +58,8 @@ abstract class AbstractRequestHandlerTest extends \PHPUnit_Framework_TestCase
|
||||
));
|
||||
|
||||
$form->expects($this->once())
|
||||
->method('Submit')
|
||||
->with('DATA');
|
||||
->method('submit')
|
||||
->with('DATA', 'PATCH' !== $method);
|
||||
|
||||
$this->requestHandler->handleRequest($form, $this->request);
|
||||
}
|
||||
@ -78,7 +78,7 @@ abstract class AbstractRequestHandlerTest extends \PHPUnit_Framework_TestCase
|
||||
));
|
||||
|
||||
$form->expects($this->never())
|
||||
->method('Submit');
|
||||
->method('submit');
|
||||
|
||||
$this->requestHandler->handleRequest($form, $this->request);
|
||||
}
|
||||
@ -95,8 +95,8 @@ abstract class AbstractRequestHandlerTest extends \PHPUnit_Framework_TestCase
|
||||
));
|
||||
|
||||
$form->expects($this->once())
|
||||
->method('Submit')
|
||||
->with($this->identicalTo(null));
|
||||
->method('submit')
|
||||
->with($this->identicalTo(null), 'PATCH' !== $method);
|
||||
|
||||
$this->requestHandler->handleRequest($form, $this->request);
|
||||
}
|
||||
@ -113,8 +113,8 @@ abstract class AbstractRequestHandlerTest extends \PHPUnit_Framework_TestCase
|
||||
));
|
||||
|
||||
$form->expects($this->once())
|
||||
->method('Submit')
|
||||
->with($this->identicalTo(array()));
|
||||
->method('submit')
|
||||
->with($this->identicalTo(array()), 'PATCH' !== $method);
|
||||
|
||||
$this->requestHandler->handleRequest($form, $this->request);
|
||||
}
|
||||
@ -128,7 +128,7 @@ abstract class AbstractRequestHandlerTest extends \PHPUnit_Framework_TestCase
|
||||
));
|
||||
|
||||
$form->expects($this->never())
|
||||
->method('Submit');
|
||||
->method('submit');
|
||||
|
||||
$this->requestHandler->handleRequest($form, $this->request);
|
||||
}
|
||||
@ -152,8 +152,8 @@ abstract class AbstractRequestHandlerTest extends \PHPUnit_Framework_TestCase
|
||||
));
|
||||
|
||||
$form->expects($this->once())
|
||||
->method('Submit')
|
||||
->with($requestData);
|
||||
->method('submit')
|
||||
->with($requestData, 'PATCH' !== $method);
|
||||
|
||||
$this->requestHandler->handleRequest($form, $this->request);
|
||||
}
|
||||
@ -176,7 +176,7 @@ abstract class AbstractRequestHandlerTest extends \PHPUnit_Framework_TestCase
|
||||
));
|
||||
|
||||
$form->expects($this->never())
|
||||
->method('Submit');
|
||||
->method('submit');
|
||||
|
||||
$this->requestHandler->handleRequest($form, $this->request);
|
||||
}
|
||||
@ -200,11 +200,11 @@ abstract class AbstractRequestHandlerTest extends \PHPUnit_Framework_TestCase
|
||||
));
|
||||
|
||||
$form->expects($this->once())
|
||||
->method('Submit')
|
||||
->method('submit')
|
||||
->with(array(
|
||||
'field1' => 'DATA',
|
||||
'field2' => $file,
|
||||
));
|
||||
), 'PATCH' !== $method);
|
||||
|
||||
$this->requestHandler->handleRequest($form, $this->request);
|
||||
}
|
||||
@ -224,8 +224,8 @@ abstract class AbstractRequestHandlerTest extends \PHPUnit_Framework_TestCase
|
||||
));
|
||||
|
||||
$form->expects($this->once())
|
||||
->method('Submit')
|
||||
->with('DATA');
|
||||
->method('submit')
|
||||
->with('DATA', 'PATCH' !== $method);
|
||||
|
||||
$this->requestHandler->handleRequest($form, $this->request);
|
||||
}
|
||||
@ -245,8 +245,8 @@ abstract class AbstractRequestHandlerTest extends \PHPUnit_Framework_TestCase
|
||||
));
|
||||
|
||||
$form->expects($this->once())
|
||||
->method('Submit')
|
||||
->with($file);
|
||||
->method('submit')
|
||||
->with($file, 'PATCH' !== $method);
|
||||
|
||||
$this->requestHandler->handleRequest($form, $this->request);
|
||||
}
|
||||
|
@ -58,6 +58,31 @@ class CompoundFormTest extends AbstractFormTest
|
||||
$this->form->submit(array());
|
||||
}
|
||||
|
||||
public function testSubmitDoesNotForwardNullIfNotClearMissing()
|
||||
{
|
||||
$child = $this->getMockForm('firstName');
|
||||
|
||||
$this->form->add($child);
|
||||
|
||||
$child->expects($this->never())
|
||||
->method('submit');
|
||||
|
||||
$this->form->submit(array(), false);
|
||||
}
|
||||
|
||||
public function testClearMissingFlagIsForwarded()
|
||||
{
|
||||
$child = $this->getMockForm('firstName');
|
||||
|
||||
$this->form->add($child);
|
||||
|
||||
$child->expects($this->once())
|
||||
->method('submit')
|
||||
->with($this->equalTo('foo'), false);
|
||||
|
||||
$this->form->submit(array('firstName' => 'foo'), false);
|
||||
}
|
||||
|
||||
public function testCloneChildren()
|
||||
{
|
||||
$child = $this->getBuilder('child')->getForm();
|
||||
|
Reference in New Issue
Block a user