From d56f78ce1b70c137c857e78a1cd5e122bb8e8b27 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Thu, 17 Aug 2017 14:27:28 +0200 Subject: [PATCH] added Form::reset() --- src/Forms/Form.php | 12 +++++ tests/Forms/Container.values.phpt | 83 +++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) diff --git a/src/Forms/Form.php b/src/Forms/Form.php index 5aa53ea39..a2044c0c0 100644 --- a/src/Forms/Form.php +++ b/src/Forms/Form.php @@ -465,6 +465,18 @@ private function invokeHandlers($handlers, $button = null) } + /** + * Resets form. + * @return static + */ + public function reset() + { + $this->setSubmittedBy(null); + $this->setValues([], true); + return $this; + } + + /** * Internal: returns submitted HTTP data or null when form was not submitted. * @return array|null diff --git a/tests/Forms/Container.values.phpt b/tests/Forms/Container.values.phpt index 89890d79d..fba16eaf7 100644 --- a/tests/Forms/Container.values.phpt +++ b/tests/Forms/Container.values.phpt @@ -74,3 +74,86 @@ Assert::equal(ArrayHash::from([ 'name' => '', ]), ]), $form->getValues()); + + +$form->setValues([ + 'name' => 'new1', + 'first' => [ + 'name' => 'new2', + ], +]); + +Assert::truthy($form->isSubmitted()); +Assert::equal(ArrayHash::from([ + 'name' => 'new1', + 'first' => ArrayHash::from([ + 'name' => 'new2', + 'age' => '40', + 'second' => ArrayHash::from([ + 'name' => 'david', + ]), + ]), + 'invalid' => ArrayHash::from([ + 'name' => '', + ]), +]), $form->getValues()); + + +$form->setValues([ + 'name' => 'new1', + 'first' => [ + 'name' => 'new2', + ], +], true); + +Assert::truthy($form->isSubmitted()); +Assert::equal(ArrayHash::from([ + 'name' => 'new1', + 'first' => ArrayHash::from([ + 'name' => 'new2', + 'age' => '', + 'second' => ArrayHash::from([ + 'name' => '', + ]), + ]), + 'invalid' => ArrayHash::from([ + 'name' => '', + ]), +]), $form->getValues()); + + +$form->reset(); + +Assert::false($form->isSubmitted()); +Assert::equal(ArrayHash::from([ + 'name' => '', + 'first' => ArrayHash::from([ + 'name' => '', + 'age' => '', + 'second' => ArrayHash::from([ + 'name' => '', + ]), + ]), + 'invalid' => ArrayHash::from([ + 'name' => '', + ]), +]), $form->getValues()); + + +$form->setDefaults([ + 'name' => 'new3', +]); + +Assert::equal(ArrayHash::from([ + 'name' => 'new3', + 'first' => ArrayHash::from([ + 'name' => '', + 'age' => '', + 'second' => ArrayHash::from([ + 'name' => '', + ]), + ]), + 'invalid' => ArrayHash::from([ + 'name' => '', + ]), +]), $form->getValues());