CHANGELOG
5.2.0
- Added support for using the
{{ label }}
placeholder in constraint messages, which is replaced in the ViolationMapper
by the corresponding field form label.
- Added
DataMapper
, ChainAccessor
, PropertyPathAccessor
and CallbackAccessor
with new callable getter
and setter
options for each form type
- Deprecated
PropertyPathMapper
in favor of DataMapper
and PropertyPathAccessor
- Added an
html5
option to MoneyType
and PercentType
, to use <input type="number" />
5.1.0
- Deprecated not configuring the
rounding_mode
option of the PercentType
. It will default to \NumberFormatter::ROUND_HALFUP
in Symfony 6.
- Deprecated not passing a rounding mode to the constructor of
PercentToLocalizedStringTransformer
. It will default to \NumberFormatter::ROUND_HALFUP
in Symfony 6.
- Added
collection_entry
block prefix to CollectionType
entries
- Added a
choice_filter
option to ChoiceType
- Added argument
callable|null $filter
to ChoiceListFactoryInterface::createListFromChoices()
and createListFromLoader()
- not defining them is deprecated.
- Added a
ChoiceList
facade to leverage explicit choice list caching based on options
- Added an
AbstractChoiceLoader
to simplify implementations and handle global optimizations
- The
view_timezone
option defaults to the model_timezone
if no reference_date
is configured.
- Implementing the
FormConfigInterface
without implementing the getIsEmptyCallback()
method
is deprecated. The method will be added to the interface in 6.0.
- Implementing the
FormConfigBuilderInterface
without implementing the setIsEmptyCallback()
method
is deprecated. The method will be added to the interface in 6.0.
- Added a
rounding_mode
option for the PercentType and correctly round the value when submitted
- Deprecated
Symfony\Component\Form\Extension\Validator\Util\ServerParams
in favor of its parent class Symfony\Component\Form\Util\ServerParams
- Added the
html5
option to the ColorType
to validate the input
- Deprecated
NumberToLocalizedStringTransformer::ROUND_*
constants, use \NumberFormatter::ROUND_*
instead
5.0.0
- Removed support for using different values for the "model_timezone" and "view_timezone" options of the
TimeType
without configuring a reference date.
- Removed the
scale
option of the IntegerType
.
- Using the
date_format
, date_widget
, and time_widget
options of the DateTimeType
when the widget
option is
set to single_text
is not supported anymore.
- The
format
option of DateType
and DateTimeType
cannot be used when the html5
option is enabled.
- Using names for buttons that do not start with a letter, a digit, or an underscore throw an exception
- Using names for buttons that do not contain only letters, digits, underscores, hyphens, and colons throw an exception.
- removed the
ChoiceLoaderInterface
implementation in CountryType
, LanguageType
, LocaleType
and CurrencyType
- removed
getExtendedType()
method of the FormTypeExtensionInterface
- added static
getExtendedTypes()
method to the FormTypeExtensionInterface
- calling to
FormRenderer::searchAndRenderBlock()
method for fields which were already rendered throw a BadMethodCallException
- removed the
regions
option of the TimezoneType
- removed the
$scale
argument of the IntegerToLocalizedStringTransformer
- removed
TemplatingExtension
and TemplatingRendererEngine
classes, use Twig instead
- passing a null message when instantiating a
Symfony\Component\Form\FormError
is not allowed
- removed support for using
int
or float
as data for the NumberType
when the input
option is set to string
4.4.0
- add new
WeekType
- using different values for the "model_timezone" and "view_timezone" options of the
TimeType
without configuring a
reference date is deprecated
- preferred choices are repeated in the list of all choices
- deprecated using
int
or float
as data for the NumberType
when the input
option is set to string
- The type guesser guesses the HTML accept attribute when a mime type is configured in the File or Image constraint.
- Overriding the methods
FormIntegrationTestCase::setUp()
, TypeTestCase::setUp()
and TypeTestCase::tearDown()
without the void
return-type is deprecated.
- marked all dispatched event classes as
@final
- Added the
validate
option to SubmitType
to toggle the browser built-in form validation.
- Added the
alpha3
option to LanguageType
and CountryType
to use alpha3 instead of alpha2 codes
4.3.0
- added a
symbol
option to the PercentType
that allows to disable or customize the output of the percent character
- Using the
format
option of DateType
and DateTimeType
when the html5
option is enabled is deprecated.
- Using names for buttons that do not start with a letter, a digit, or an underscore is deprecated and will lead to an
exception in 5.0.
- Using names for buttons that do not contain only letters, digits, underscores, hyphens, and colons is deprecated and
will lead to an exception in 5.0.
- added
html5
option to NumberType
that allows to render type="number"
input fields
- deprecated using the
date_format
, date_widget
, and time_widget
options of the DateTimeType
when the widget
option is set to single_text
- added
block_prefix
option to BaseType
.
- added
help_html
option to display the help
text as HTML.
FormError
doesn't implement Serializable
anymore
FormDataCollector
has been marked as final
- added
label_translation_parameters
, attr_translation_parameters
, help_translation_parameters
options
to FormType
to pass translation parameters to form labels, attributes (placeholder
and title
) and help text respectively.
The passed parameters will replace placeholders in translation messages.
class OrderType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('comment', TextType::class, [
'label' => 'Comment to the order to %company%',
'label_translation_parameters' => [
'%company%' => 'Acme',
],
'help' => 'The address of the %company% is %address%',
'help_translation_parameters' => [
'%company%' => 'Acme Ltd.',
'%address%' => '4 Form street, Symfonyville',
],
])
}
}
- added the
input_format
option to DateType
, DateTimeType
, and TimeType
to specify the input format when setting
the input
option to string
- dispatch
PreSubmitEvent
on form.pre_submit
- dispatch
SubmitEvent
on form.submit
- dispatch
PostSubmitEvent
on form.post_submit
- dispatch
PreSetDataEvent
on form.pre_set_data
- dispatch
PostSetDataEvent
on form.post_set_data
- added an
input
option to NumberType
- removed default option grouping in
TimezoneType
, use group_by
instead
4.2.0
- The
getExtendedType()
method of the FormTypeExtensionInterface
is deprecated and will be removed in 5.0. Type
extensions must implement the static getExtendedTypes()
method instead and return an iterable of extended types.
Before:
class FooTypeExtension extends AbstractTypeExtension
{
public function getExtendedType()
{
return FormType::class;
}
// ...
}
After:
class FooTypeExtension extends AbstractTypeExtension
{
public static function getExtendedTypes(): iterable
{
return [FormType::class];
}
// ...
}
- deprecated the
$scale
argument of the IntegerToLocalizedStringTransformer
- added
Symfony\Component\Form\ClearableErrorsInterface
- deprecated calling
FormRenderer::searchAndRenderBlock
for fields which were already rendered
- added a cause when a CSRF error has occurred
- deprecated the
scale
option of the IntegerType
- removed restriction on allowed HTTP methods
- deprecated the
regions
option of the TimezoneType
4.1.0
- added
input=datetime_immutable
to DateType
, TimeType
, DateTimeType
- added
rounding_mode
option to MoneyType
- added
choice_translation_locale
option to CountryType
, LanguageType
, LocaleType
and CurrencyType
- deprecated the
ChoiceLoaderInterface
implementation in CountryType
, LanguageType
, LocaleType
and CurrencyType
- added
input=datetime_immutable
to DateType, TimeType, DateTimeType
- added
rounding_mode
option to MoneyType
4.0.0
- using the
choices
option in CountryType
, CurrencyType
, LanguageType
,
LocaleType
, and TimezoneType
when the choice_loader
option is not null
is not supported anymore and the configured choices will be ignored
- callable strings that are passed to the options of the
ChoiceType
are
treated as property paths
- the
choices_as_values
option of the ChoiceType
has been removed
- removed the support for caching loaded choice lists in
LazyChoiceList
,
cache the choice list in the used ChoiceLoaderInterface
implementation
instead
- removed the support for objects implementing both
\Traversable
and \ArrayAccess
in ResizeFormListener::preSubmit()
- removed the ability to use
FormDataCollector
without the symfony/var-dumper
component
- removed passing a
ValueExporter
instance to the FormDataExtractor::__construct()
method
- removed passing guesser services ids as the fourth argument of
DependencyInjectionExtension::__construct()
- removed the ability to validate an unsubmitted form.
- removed
ChoiceLoaderInterface
implementation in TimezoneType
- added the
false_values
option to the CheckboxType
which allows to configure custom values which will be treated as false
during submission
3.4.0
- added
DebugCommand
- deprecated
ChoiceLoaderInterface
implementation in TimezoneType
- added options "input" and "regions" to
TimezoneType
- added an option to
Symfony\Component\Form\FormRendererEngineInterface::setTheme()
and
Symfony\Component\Form\FormRendererInterface::setTheme()
to disable usage of default themes when rendering a form
3.3.0
- deprecated using "choices" option in
CountryType
, CurrencyType
, LanguageType
, LocaleType
, and
TimezoneType
when "choice_loader" is not null
- added
Symfony\Component\Form\FormErrorIterator::findByCodes()
- added
getTypedExtensions
, getTypes
, and getTypeGuessers
to Symfony\Component\Form\Test\FormIntegrationTestCase
- added
FormPass
3.2.0
- added
CallbackChoiceLoader
- implemented
ChoiceLoaderInterface
in children of ChoiceType
3.1.0
- deprecated the "choices_as_values" option of ChoiceType
- deprecated support for data objects that implements both
Traversable
and
ArrayAccess
in ResizeFormListener::preSubmit
method
- Using callable strings as choice options in
ChoiceType
has been deprecated
and will be used as PropertyPath
instead of callable in Symfony 4.0.
- implemented
DataTransformerInterface
in TextType
- deprecated caching loaded choice list in
LazyChoiceList::$loadedList
3.0.0
- removed
FormTypeInterface::setDefaultOptions()
method
- removed
AbstractType::setDefaultOptions()
method
- removed
FormTypeExtensionInterface::setDefaultOptions()
method
- removed
AbstractTypeExtension::setDefaultOptions()
method
- added
FormTypeInterface::configureOptions()
method
- added
FormTypeExtensionInterface::configureOptions()
method
2.8.0
- added option "choice_translation_domain" to DateType, TimeType and DateTimeType.
- deprecated option "read_only" in favor of "attr['readonly']"
- added the html5 "range" FormType
- deprecated the "cascade_validation" option in favor of setting "constraints"
with the Valid constraint
- moved data trimming logic of TrimListener into StringUtil
- [BC BREAK] When registering a type extension through the DI extension, the tag alias has to match the actual extended type.
2.7.38
- [BC BREAK] the
isFileUpload()
method was added to the RequestHandlerInterface
2.7.0
- added option "choice_translation_domain" to ChoiceType.
- deprecated option "precision" in favor of "scale"
- deprecated the overwriting of AbstractType::setDefaultOptions() in favor of overwriting AbstractType::configureOptions().
- deprecated the overwriting of AbstractTypeExtension::setDefaultOptions() in favor of overwriting AbstractTypeExtension::configureOptions().
- added new ChoiceList interface and implementations in the Symfony\Component\Form\ChoiceList namespace
- added new ChoiceView in the Symfony\Component\Form\ChoiceList\View namespace
- choice groups are now represented by ChoiceGroupView objects in the view
- deprecated the old ChoiceList interface and implementations
- deprecated the old ChoiceView class
- added CheckboxListMapper and RadioListMapper
- deprecated ChoiceToBooleanArrayTransformer and ChoicesToBooleanArrayTransformer
- deprecated FixCheckboxInputListener and FixRadioInputListener
- deprecated the "choice_list" option of ChoiceType
- added new options to ChoiceType:
- "choices_as_values"
- "choice_loader"
- "choice_label"
- "choice_name"
- "choice_value"
- "choice_attr"
- "group_by"
2.6.2
- Added back the
model_timezone
and view_timezone
options for TimeType
, DateType
and BirthdayType
2.6.0
- added "html5" option to Date, Time and DateTimeFormType to be able to
enable/disable HTML5 input date when widget option is "single_text"
- added "label_format" option with possible placeholders "%name%" and "%id%"
- [BC BREAK] drop support for model_timezone and view_timezone options in TimeType, DateType and BirthdayType,
update to 2.6.2 to get back support for these options
2.5.0
- deprecated options "max_length" and "pattern" in favor of putting these values in "attr" option
- added an option for multiple files upload
- form errors now reference their cause (constraint violation, exception, ...)
- form errors now remember which form they were originally added to
- [BC BREAK] added two optional parameters to FormInterface::getErrors() and
changed the method to return a Symfony\Component\Form\FormErrorIterator
instance instead of an array
- errors mapped to unsubmitted forms are discarded now
- ObjectChoiceList now compares choices by their value, if a value path is
given
- you can now pass interface names in the "data_class" option
- [BC BREAK] added
FormInterface::getTransformationFailure()
2.4.0
- moved CSRF implementation to the new Security CSRF sub-component
- deprecated CsrfProviderInterface and its implementations
- deprecated options "csrf_provider" and "intention" in favor of the new options "csrf_token_manager" and "csrf_token_id"
2.3.0
- deprecated FormPerformanceTestCase and FormIntegrationTestCase in the Symfony\Component\Form\Tests namespace and moved them to the Symfony\Component\Form\Test namespace
- deprecated TypeTestCase in the Symfony\Component\Form\Tests\Extension\Core\Type namespace and moved it to the Symfony\Component\Form\Test namespace
- changed FormRenderer::humanize() to humanize also camel cased field name
- added RequestHandlerInterface and FormInterface::handleRequest()
- deprecated passing a Request instance to FormInterface::bind()
- added options "method" and "action" to FormType
- deprecated option "virtual" in favor "inherit_data"
- deprecated VirtualFormAwareIterator in favor of InheritDataAwareIterator
- [BC BREAK] removed the "array" type hint from DataMapperInterface
- improved forms inheriting their parent data to actually return that data from getData(), getNormData() and getViewData()
- added component-level exceptions for various SPL exceptions
changed all uses of the deprecated Exception class to use more specialized exceptions instead
removed NotInitializedException, NotValidException, TypeDefinitionException, TypeLoaderException, CreationException
- added events PRE_SUBMIT, SUBMIT and POST_SUBMIT
- deprecated events PRE_BIND, BIND and POST_BIND
- [BC BREAK] renamed bind() and isBound() in FormInterface to submit() and isSubmitted()
- added methods submit() and isSubmitted() to Form
- deprecated bind() and isBound() in Form
- deprecated AlreadyBoundException in favor of AlreadySubmittedException
- added support for PATCH requests
- [BC BREAK] added initialize() to FormInterface
- [BC BREAK] added getAutoInitialize() to FormConfigInterface
- [BC BREAK] added setAutoInitialize() to FormConfigBuilderInterface
- [BC BREAK] initialization for Form instances added to a form tree must be manually disabled
- PRE_SET_DATA is now guaranteed to be called after children were added by the form builder,
unless FormInterface::setData() is called manually
- fixed CSRF error message to be translated
- custom CSRF error messages can now be set through the "csrf_message" option
- fixed: expanded single-choice fields now show a radio button for the empty value
2.2.0
- TrimListener now removes unicode whitespaces
- deprecated getParent(), setParent() and hasParent() in FormBuilderInterface
- FormInterface::add() now accepts a FormInterface instance OR a field's name, type and options
- removed special characters between the choice or text fields of DateType unless
the option "format" is set to a custom value
- deprecated FormException and introduced ExceptionInterface instead
- [BC BREAK] FormException is now an interface
- protected FormBuilder methods from being called when it is turned into a FormConfigInterface with getFormConfig()
- [BC BREAK] inserted argument
$message
in the constructor of FormError
- the PropertyPath class and related classes were moved to a dedicated
PropertyAccess component. During the move, InvalidPropertyException was
renamed to NoSuchPropertyException. FormUtil was split: FormUtil::singularify()
can now be found in Symfony\Component\PropertyAccess\StringUtil. The methods
getValue() and setValue() from PropertyPath were extracted into a new class
PropertyAccessor.
- added an optional PropertyAccessorInterface parameter to FormType,
ObjectChoiceList and PropertyPathMapper
- [BC BREAK] PropertyPathMapper and FormType now have a constructor
- [BC BREAK] setting the option "validation_groups" to
false
now disables validation
instead of assuming group "Default"
2.1.0
- [BC BREAK]
read_only
field attribute now renders as readonly="readonly"
, use disabled
instead
- [BC BREAK] child forms now aren't validated anymore by default
- made validation of form children configurable (new option: cascade_validation)
- added support for validation groups as callbacks
- made the translation catalogue configurable via the "translation_domain" option
- added Form::getErrorsAsString() to help debugging forms
- allowed setting different options for RepeatedType fields (like the label)
- added support for empty form name at root level, this enables rendering forms
without form name prefix in field names
- [BC BREAK] form and field names must start with a letter, digit or underscore
and only contain letters, digits, underscores, hyphens and colons
- [BC BREAK] changed default name of the prototype in the "collection" type
from "$$name$$" to "_name_". No dollars are appended/prepended to custom
names anymore.
- [BC BREAK] improved ChoiceListInterface
- [BC BREAK] added SimpleChoiceList and LazyChoiceList as replacement of
ArrayChoiceList
- added ChoiceList and ObjectChoiceList to use objects as choices
- [BC BREAK] removed EntitiesToArrayTransformer and EntityToIdTransformer.
The former has been replaced by CollectionToArrayTransformer in combination
with EntityChoiceList, the latter is not required in the core anymore.
- [BC BREAK] renamed
- ArrayToBooleanChoicesTransformer to ChoicesToBooleanArrayTransformer
- ScalarToBooleanChoicesTransformer to ChoiceToBooleanArrayTransformer
- ArrayToChoicesTransformer to ChoicesToValuesTransformer
- ScalarToChoiceTransformer to ChoiceToValueTransformer
to be consistent with the naming in ChoiceListInterface.
They were merged into ChoiceList and have no public equivalent anymore.
- choice fields now throw a FormException if neither the "choices" nor the
"choice_list" option is set
- the radio type is now a child of the checkbox type
- the collection, choice (with multiple selection) and entity (with multiple
selection) types now make use of addXxx() and removeXxx() methods in your
model if you set "by_reference" to false. For a custom, non-recognized
singular form, set the "property_path" option like this: "plural|singular"
- forms now don't create an empty object anymore if they are completely
empty and not required. The empty value for such forms is null.
- added constant Guess::VERY_HIGH_CONFIDENCE
- [BC BREAK] The methods
add
, remove
, setParent
, bind
and setData
in class Form now throw an exception if the form is already bound
- fields of constrained classes without a NotBlank or NotNull constraint are
set to not required now, as stated in the docs
- fixed TimeType and DateTimeType to not display seconds when "widget" is
"single_text" unless "with_seconds" is set to true
- checkboxes of in an expanded multiple-choice field don't include the choice
in their name anymore. Their names terminate with "[]" now.
- deprecated FormValidatorInterface and substituted its implementations
by event subscribers
- simplified CSRF protection and removed the csrf type
- deprecated FieldType and merged it into FormType
- added new option "compound" that lets you switch between field and form behavior
- [BC BREAK] renamed theme blocks
- "field*" to "form*"
- "field_widget" to "form_widget_simple"
- "widget_choice_options" to "choice_widget_options"
- "generic_label" to "form_label"
- added theme blocks "form_widget_compound", "choice_widget_expanded" and
"choice_widget_collapsed" to make theming more modular
- ValidatorTypeGuesser now guesses "collection" for array type constraint
- added method
guessPattern
to FormTypeGuesserInterface to guess which pattern to use in the HTML5 attribute "pattern"
- deprecated method
guessMinLength
in favor of guessPattern
- labels don't display field attributes anymore. Label attributes can be
passed in the "label_attr" option/variable
- added option "mapped" which should be used instead of setting "property_path" to false
- [BC BREAK] "data_class" now must be set if a form maps to an object and should be left empty otherwise
- improved error mapping on forms
- dot (".") rules are now allowed to map errors assigned to a form to
one of its children
- errors are not mapped to unsynchronized forms anymore
- [BC BREAK] changed Form constructor to accept a single
FormConfigInterface
object
- [BC BREAK] changed argument order in the FormBuilder constructor
- added Form method
getViewData
- deprecated Form methods
getTypes
getErrorBubbling
getNormTransformers
getClientTransformers
getAttribute
hasAttribute
getClientData
- added FormBuilder methods
getTypes
addViewTransformer
getViewTransformers
resetViewTransformers
addModelTransformer
getModelTransformers
resetModelTransformers
- deprecated FormBuilder methods
prependClientTransformer
appendClientTransformer
getClientTransformers
resetClientTransformers
prependNormTransformer
appendNormTransformer
getNormTransformers
resetNormTransformers
- deprecated the option "validation_constraint" in favor of the new
option "constraints"
- removed superfluous methods from DataMapperInterface
mapFormToData
mapDataToForm
- added
setDefaultOptions
to FormTypeInterface and FormTypeExtensionInterface
which accepts an OptionsResolverInterface instance
- deprecated the methods
getDefaultOptions
and getAllowedOptionValues
in FormTypeInterface and FormTypeExtensionInterface
- options passed during construction can now be accessed from FormConfigInterface
- added FormBuilderInterface and FormConfigEditorInterface
- [BC BREAK] the method
buildForm
in FormTypeInterface and FormTypeExtensionInterface
now receives a FormBuilderInterface instead of a FormBuilder instance
- [BC BREAK] the method
buildViewBottomUp
was renamed to finishView
in
FormTypeInterface and FormTypeExtensionInterface
- [BC BREAK] the options array is now passed as last argument of the
methods
buildView
finishView
in FormTypeInterface and FormTypeExtensionInterface
- [BC BREAK] no options are passed to
getParent
of FormTypeInterface anymore
- deprecated DataEvent and FilterDataEvent in favor of the new FormEvent which is
now passed to all events thrown by the component
- FormEvents::BIND now replaces FormEvents::BIND_NORM_DATA
- FormEvents::PRE_SET_DATA now replaces FormEvents::SET_DATA
- FormEvents::PRE_BIND now replaces FormEvents::BIND_CLIENT_DATA
- deprecated FormEvents::SET_DATA, FormEvents::BIND_CLIENT_DATA and
FormEvents::BIND_NORM_DATA
- [BC BREAK] reversed the order of the first two arguments to
createNamed
and createNamedBuilder
in FormFactoryInterface
- deprecated
getChildren
in Form and FormBuilder in favor of all
- deprecated
hasChildren
in Form and FormBuilder in favor of count
- FormBuilder now implements \IteratorAggregate
- [BC BREAK] compound forms now always need a data mapper
- FormBuilder now maintains the order when explicitly adding form builders as children
- ChoiceType now doesn't add the empty value anymore if the choices already contain an empty element
- DateType, TimeType and DateTimeType now show empty values again if not required
- [BC BREAK] fixed rendering of errors for DateType, BirthdayType and similar ones
- [BC BREAK] fixed: form constraints are only validated if they belong to the validated group
- deprecated
bindRequest
in Form
and replaced it by a listener to FormEvents::PRE_BIND
- fixed: the "data" option supersedes default values from the model
- changed DateType to refer to the "format" option for calculating the year and day choices instead
of padding them automatically
- [BC BREAK] DateType defaults to the format "yyyy-MM-dd" now if the widget is
"single_text", in order to support the HTML 5 date field out of the box
- added the option "format" to DateTimeType
- [BC BREAK] DateTimeType now outputs RFC 3339 dates by default, as generated and
consumed by HTML5 browsers, if the widget is "single_text"
- deprecated the options "data_timezone" and "user_timezone" in DateType, DateTimeType and TimeType
and renamed them to "model_timezone" and "view_timezone"
- fixed: TransformationFailedExceptions thrown in the model transformer are now caught by the form
- added FormRegistryInterface, ResolvedFormTypeInterface and ResolvedFormTypeFactoryInterface
- deprecated FormFactory methods
- [BC BREAK] FormFactory now expects a FormRegistryInterface and a ResolvedFormTypeFactoryInterface as constructor argument
- [BC BREAK] The method
createBuilder
in FormTypeInterface is not supported anymore for performance reasons
- [BC BREAK] Removed
setTypes
from FormBuilder
- deprecated AbstractType methods
getExtensions
setExtensions
- ChoiceType now caches its created choice lists to improve performance
- [BC BREAK] Rows of a collection field cannot be themed individually anymore. All rows in the collection
field now have the same block names, which contains "entry" where it previously contained the row index.
- [BC BREAK] When registering a type through the DI extension, the tag alias has to match the actual type name.
- added FormRendererInterface, FormRendererEngineInterface and implementations of these interfaces
- [BC BREAK] removed the following methods from FormUtil:
toArrayKey
toArrayKeys
isChoiceGroup
isChoiceSelected
- [BC BREAK] renamed method
renderBlock
in FormHelper to block
and changed its signature
- made FormView properties public and deprecated their accessor methods
- made the normalized data of a form accessible in the template through the variable "form.vars.data"
- made the original data of a choice accessible in the template through the property "choice.data"
- added convenience class Forms and FormFactoryBuilderInterface