Commit Graph

424 Commits

Author SHA1 Message Date
Fabien Potencier
0555b7f2ab made types consistent with those defined in Hack 2014-04-13 20:00:14 +02:00
Bernhard Schussek
f3e172f6e5 [Form] Improved test coverage of UrlType 2014-04-09 05:11:36 +02:00
Bernhard Schussek
ebfee723c9 [Form] Added test for disabling buttons 2014-03-31 11:59:54 +02:00
Fabien Potencier
8a19b9ac08 fixed CS 2014-03-28 11:34:27 +01:00
Bernhard Schussek
18dc9a7f5f Added test case for 4c6a2d15095c13b2a35751b2b2712b183be489c4 2014-03-28 11:31:34 +01:00
Fabien Potencier
fc251dbcd4 bug #10410 [Form] Fix "Array was modified outside object" in ResizeFormListener. (Chekote)
This PR was squashed before being merged into the 2.3 branch (closes #10410).

Discussion
----------

[Form] Fix "Array was modified outside object" in ResizeFormListener.

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #10405
| License       | MIT
| Doc PR        |

This is the second pull request for this issue. The history of this is as follows:

Original Fix was added Feb 11th under Pull Request #10232.
Users began complaining of Doctrine ArrayCollection not being updated in forms.
Revert was added Feb 15th under Pull Request #10269.
Issue #10405 was opened on 7th Mar for the original bug.

Pull Request #10269 has a failing test that illustrates users concerns.
I have added failing tests to this pull request to illustrate the problems described in #10405.

All tests now pass, and all forms of $data are now supported, including arrays, DoctrineCollection, ArrayObject, and other IteratorAggregates.

__Details as follows:__

The onSubmit() method of the ResizeFormListener class is assuming the data is an array, and calling unset directly inside a foreach. This works fine in most scenarios, but if data is an instance of IteratorAggregate that is iterating over $data by reference, it breaks with the following error:

Symfony\Component\Form\Extension\Core\EventListener\ResizeFormListener::onSubmit(): ArrayIterator::next(): Array was modified outside object and internal position is no longer valid in ./vendor/symfony/symfony/src/Symfony/Component/Form/Extension/Core/EventListener/ResizeFormListener.php line 142

This is because the foreach loop is using an Iterator in the background, but the ResizeFormListener has unset the underlying data directly, causing the value that the Iterators internal pointer is pointing to to change.

The Iterator provided by IteratorAggregate may or may not have the ability to modify it's underlying data. So it is not possible to rely on the Iterator to modify the data. Instead, it is simpler to avoid modifying $data at all while we are iterating over it. So instead, we simply iterate over $data once to determine the keys we need to delete, and store them. Then we iterate over the keys and delete them from $data.

Commits
-------

aa63fae [Form] Fix "Array was modified outside object" in ResizeFormListener.
2014-03-19 17:44:48 +01:00
Chekote
aa63faea06 [Form] Fix "Array was modified outside object" in ResizeFormListener. 2014-03-19 17:44:48 +01:00
Nick Stemerdink
861d3075b3 Fixed bug that incorrectly causes the "required" attribute to be omitted from select even though it contains the "multiple" attribute 2014-03-19 14:38:32 +01:00
Fabien Potencier
485efad0bb bug #10251 [Form][2.3] Fixes empty file-inputs getting treated as extra field. (jenkoian)
This PR was squashed before being merged into the 2.3 branch (closes #10251).

Discussion
----------

[Form][2.3] Fixes empty file-inputs getting treated as extra field.

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #8575 (https://github.com/symfony/symfony/pull/8575#issuecomment-34867485)
| License       | MIT

Re-applies 968fe23 (PR #8575).

The test for this already exists, it was just this line that got overwritten by eb9f76d5ba (diff-ca5e25b47f3ecc94cd557946aeb486c6L542)

To clarify, this is a PR into 2.3 branch - this already exists in 2.4 (and later from this PR: https://github.com/symfony/symfony/pull/9146)

Commits
-------

8d99d75 [Form][2.3] Fixes empty file-inputs getting treated as extra field.
2014-03-03 13:52:14 +01:00
Ian Jenkins
8d99d7561b [Form][2.3] Fixes empty file-inputs getting treated as extra field. 2014-03-03 13:52:14 +01:00
Norbert Orzechowicz
462b7af9b1 Added failing test 2014-02-15 12:00:54 +01:00
Fabien Potencier
eb3f6c6efb fixed various inconsistencies 2014-02-11 11:29:24 +01:00
Fabien Potencier
a38e2c042b fixes PSR-0 issues in tests 2013-12-30 22:13:42 +01:00
Fabien Potencier
35b407f016 fixed CS for lambdas 2013-12-28 08:46:05 +01:00
Eric GELOEN
d0555f4498 Check for hour, minute & second validity 2013-12-27 22:48:33 +01:00
Fabien Potencier
2f15ac7507 fixed various typos 2013-12-27 16:08:19 +01:00
artem kolesnikov
0bbde05d8d Fixed issue in BaseDateTimeTransformer when invalid timezone cause Transformation filed exception (closes #9403). 2013-12-17 08:19:11 +01:00
Fabien Potencier
3062681110 fixed CS 2013-12-12 17:08:59 +01:00
Fabien Potencier
ad9008e452 Merge branch '2.2' into 2.3
* 2.2:
  Teardown used wrong property
  Modified guessDefaultEscapingStrategy to not escape txt templates
  Fix DateType for 32bits computers.
  Fixed the registration of validation.xml file when the form is disabled
  When getting the session's id, check if the session is not closed
2013-11-28 11:26:47 +01:00
WedgeSama
2f9bb75174 Fix DateType for 32bits computers. 2013-11-28 08:06:13 +01:00
Fabien Potencier
8d69bb5886 fixed @expectedException class names 2013-11-25 09:44:14 +01:00
Fabien Potencier
6316de572a bug #9211 [Form] Fixed memory leak in FormValidator (bschussek)
This PR was merged into the 2.3 branch.

Discussion
----------

[Form] Fixed memory leak in FormValidator

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #9187
| License       | MIT
| Doc PR        | -

Commits
-------

1bb7e4d [Form] Added method Form::getClickedButton() to remove memory leak in FormValidator
5329ab5 [Form] Fixed memory leak in FormValidator
2013-11-14 21:58:12 +01:00
Bernhard Schussek
1bb7e4dc7b [Form] Added method Form::getClickedButton() to remove memory leak in FormValidator 2013-11-09 16:25:41 +01:00
Joseph Deray
b952bcbf9a fixed issue with clone now the children of the original form are preserved and the clone form is given new children 2013-10-30 18:44:30 -04:00
Fabien Potencier
43f749e507 Merge branch '2.2' into 2.3
* 2.2:
  fixed CS
  Fixed the error handling when decoding invalid XML to avoid a Warning
  [Form] Fixed: The "data" option is taken into account even if it is NULL
  [DomCrawler] [HttpFoundation] Make `Content-Type` attributes identification case-insensitive

Conflicts:
	src/Symfony/Component/Form/Extension/Core/Type/FormType.php
2013-10-30 09:28:22 +01:00
Fabien Potencier
0211c387d3 fixed CS 2013-10-30 09:27:36 +01:00
Bernhard Schussek
c1a3eb3f2e [Form] Fixed: The "data" option is taken into account even if it is NULL 2013-10-28 10:50:26 +01:00
Fabien Potencier
60a14f6ffe Merge branch '2.2' into 2.3
* 2.2:
  [DoctrineBridge] Added type check to prevent calling clear() on arrays
  [Intl] Improved FormTypeCsrfExtension to use the type class as default intention if the form name is empty
  Fix docblock typo

Conflicts:
	src/Symfony/Component/Form/Extension/Csrf/Type/FormTypeCsrfExtension.php
2013-10-18 17:00:23 +02:00
Bernhard Schussek
baa2356859 [Intl] Improved FormTypeCsrfExtension to use the type class as default intention if the form name is empty 2013-10-18 13:11:42 +02:00
Bernhard Schussek
219e44d610 [Intl] Improved FormTypeCsrfExtension to use the type class as default intention if the form name is empty 2013-10-18 13:07:56 +02:00
Bernhard Schussek
c4abe83e9b Merge branch 'fix-csrf-default-2.2' into fix-csrf-default-2.3
Conflicts:
	src/Symfony/Component/Form/Extension/Csrf/Type/FormTypeCsrfExtension.php
2013-10-17 18:01:33 +02:00
Bernhard Schussek
b07c618bf4 [Form] Changed FormTypeCsrfExtension to use the form's name as default intention 2013-10-17 17:52:50 +02:00
Fabien Potencier
8e21cac9e1 Merge branch '2.2' into 2.3
* 2.2:
  [DoctrineBridge] Loosened CollectionToArrayTransformer::transform() to accept arrays
  Removed unused use statements.
  Make usleep longer and simplify assertions
  Added japanese translation resource for security component.
  [Yaml] Fixed the escaping of strings starting with a dash when dumping
  Fix in ChainLoader.php
  fixed wrong started states
2013-10-17 13:48:01 +02:00
Hugo Hamon
0946be6c5b Removed unused use statements. 2013-10-16 14:19:20 +02:00
Bernhard Schussek
5329ab5d5f [Form] Fixed memory leak in FormValidator 2013-10-04 09:21:40 +02:00
Fabien Potencier
b0687c8d81 Merge branch '2.2' into 2.3
* 2.2:
  [Form] add support for Length and Range constraint in order to replace MaxLength, MinLength, Max and Min constraints in next release (2.3)
  [Form] check the required output timezone against the actual timezone of the input datetime object, rather than the expected timezone supplied
2013-10-01 14:47:27 +02:00
franek
89a040434e [Form] add support for Length and Range constraint in order to replace MaxLength, MinLength, Max and Min constraints in next release (2.3) 2013-10-01 14:21:02 +02:00
Fabien Potencier
e281d7748e bug#8809 [Form] enforce correct timezone (Burgov)
This PR was merged into the 2.2 branch.

Discussion
----------

[Form] enforce correct timezone

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | not sure if this is a BC break...
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

I'm using the Form component to handle JSON requests which come from AJAX requests. The JSON is formed by the Angular toJson method

A typical request would be:
```
{
  name: "Some name"
  start: "2013-08-21T05:00:00.000Z"
  end: "2013-08-21T15:00:00.000Z"
}
```

Note that in this case, what I entered in my input boxes are 7:00 for start and 17:00 for end times. As you can see, Angular (or Chrome, I'm not sure), converts this to the "Z" timezone. Since I cannot enforce the correct timezone client side, the timezone will differ from the one configured in the DateTimeType, however, instead of resulting in either an error or a conversion to the correct timezone, I get a datetime object in the wrong timezone, eventually resulting in wrong values in the database.

By checking the required output timezone against the actual timezone of the input datetime object, rather than the expected timezone supplied, this problem is solved.

Commits
-------

b0349a1 [Form] check the required output timezone against the actual timezone of the input datetime object, rather than the expected timezone supplied
2013-09-30 12:22:54 +02:00
Bernhard Schussek
a273e79898 [Form] Fixed: "required" attribute is not added to <select> tag if no empty value 2013-09-13 16:56:26 +02:00
Fabien Potencier
0f78175dcd Merge branch '2.2' into 2.3
* 2.2:
  [HttpKernel] added a check for private event listeners/subscribers
  [FrameworkBundle] fixed registration of the register listener pass
  [Form] Fixed regression causing invalid "WHERE id IN ()" statements
  [DependencyInjection] fixed a non-detected circular reference in PhpDumper (closes #8425)
  [Form] Fixed regression in BooleanToStringTransformer from ed83752
  [FrameworkBundle] removed obsolete code
  [Process] Close unix pipes before calling `proc_close` to avoid a deadlock

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php
	src/Symfony/Component/HttpKernel/DependencyInjection/RegisterListenersPass.php
	src/Symfony/Component/Process/Process.php
2013-09-12 14:57:47 +02:00
Bernhard Schussek
2747bdca76 [Form] Fixed regression in BooleanToStringTransformer from ed83752 2013-09-12 09:25:54 +02:00
Fabien Potencier
ff64313f12 merged branch bschussek/issue8317 (PR #8978)
This PR was merged into the 2.3 branch.

Discussion
----------

[Form] Fixed FormValidator::findClickedButton() not to be called exponentially

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #8317
| License       | MIT
| Doc PR        | -

Commits
-------

b65a515 [Form] Fixed FormValidator::findClickedButton() not to be called exponentially
2013-09-10 22:42:10 +02:00
Bernhard Schussek
58e7c100dc [Form] Improved test coverage of ChoiceList classes 2013-09-10 18:17:27 +02:00
Bernhard Schussek
9542d72dc0 [Form] Fixed expanded choice field to be marked invalid when unknown choices are submitted 2013-09-10 18:17:27 +02:00
Bernhard Schussek
72b8807630 [Form] Fixed ChoiceList::get*By*() methods to preserve order and array keys 2013-09-10 18:17:27 +02:00
Bernhard Schussek
9d3628cf13 [Form] Improved test coverage of ChoiceList classes 2013-09-10 18:05:04 +02:00
Bernhard Schussek
ed837522af [Form] Fixed expanded choice field to be marked invalid when unknown choices are submitted 2013-09-10 18:05:04 +02:00
Bernhard Schussek
30aa1de8dc [Form] Fixed ChoiceList::get*By*() methods to preserve order and array keys 2013-09-10 17:43:42 +02:00
Bernhard Schussek
b65a51519d [Form] Fixed FormValidator::findClickedButton() not to be called exponentially 2013-09-10 16:01:37 +02:00
Fabien Potencier
3689849e8b Merge branch '2.2' into 2.3 (closes #8955)
* 2.2:
  [HttpFoundation] removed extra parenthesis
  [Process][2.2] Fix Process component on windows
  [HttpFoundation] improve perf of previous merge (refs #8882)
  Request->getPort() should prefer HTTP_HOST over SERVER_PORT
  Fixing broken http auth digest in some circumstances (php-fpm + apache).
  fixed typo

Conflicts:
	src/Symfony/Component/Process/Process.php
2013-09-07 18:30:19 +02:00