140ed985be
This PR was merged into the 2.7 branch.
Discussion
----------
[Form] Improved performance of ChoiceType and its subtypes
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | -
| License | MIT
| Doc PR | -
I found out today that, although CachingFactoryDecorator is part of Symfony 2.7, it is not configured to be used in the DI configuration. This simple in-memory cache improved the page load by 50% for one considerably large form with many (~600) choice/entity fields that I was working on today.
Also, caching of query builders with parameters was broken, since the parameters are represented by objects. PHP's object hashes were used to calculate the cache keys, hence the cache always missed. I converted parameters to arrays for calculating the cache keys to fix this problem.
Commits
-------
|
||
---|---|---|
.. | ||
ChoiceList | ||
Deprecated | ||
Exception | ||
Extension | ||
Guess | ||
Resources | ||
Test | ||
Tests | ||
Util | ||
.gitignore | ||
AbstractExtension.php | ||
AbstractRendererEngine.php | ||
AbstractType.php | ||
AbstractTypeExtension.php | ||
Button.php | ||
ButtonBuilder.php | ||
ButtonTypeInterface.php | ||
CallbackTransformer.php | ||
CHANGELOG.md | ||
ClickableInterface.php | ||
composer.json | ||
DataMapperInterface.php | ||
DataTransformerInterface.php | ||
Form.php | ||
FormBuilder.php | ||
FormBuilderInterface.php | ||
FormConfigBuilder.php | ||
FormConfigBuilderInterface.php | ||
FormConfigInterface.php | ||
FormError.php | ||
FormErrorIterator.php | ||
FormEvent.php | ||
FormEvents.php | ||
FormExtensionInterface.php | ||
FormFactory.php | ||
FormFactoryBuilder.php | ||
FormFactoryBuilderInterface.php | ||
FormFactoryInterface.php | ||
FormInterface.php | ||
FormRegistry.php | ||
FormRegistryInterface.php | ||
FormRenderer.php | ||
FormRendererEngineInterface.php | ||
FormRendererInterface.php | ||
Forms.php | ||
FormTypeExtensionInterface.php | ||
FormTypeGuesserChain.php | ||
FormTypeGuesserInterface.php | ||
FormTypeInterface.php | ||
FormView.php | ||
LICENSE | ||
NativeRequestHandler.php | ||
phpunit.xml.dist | ||
PreloadedExtension.php | ||
README.md | ||
RequestHandlerInterface.php | ||
ResolvedFormType.php | ||
ResolvedFormTypeFactory.php | ||
ResolvedFormTypeFactoryInterface.php | ||
ResolvedFormTypeInterface.php | ||
ReversedTransformer.php | ||
SubmitButton.php | ||
SubmitButtonBuilder.php | ||
SubmitButtonTypeInterface.php |
Form Component
Form provides tools for defining forms, rendering and mapping request data to related models. Furthermore it provides integration with the Validation component.
Resources
Silex integration:
https://github.com/silexphp/Silex/blob/master/src/Silex/Provider/FormServiceProvider.php
Documentation:
https://symfony.com/doc/2.7/book/forms.html
Resources
You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/Form/
$ composer install
$ phpunit