Commit Graph

57 Commits

Author SHA1 Message Date
Bernhard Schussek
4b78c4376f [Form] Added FieldFactory mechanism to automatically create fields by introspecting metadata of a class 2011-01-05 15:02:56 +01:00
Bernhard Schussek
acdd5c06de [Form] Changed value transformers to throw UnexpectedTypeException instances 2011-01-03 22:07:08 +01:00
Bernhard Schussek
48af2fc86e [Form][FrameworkBundle][HttpFoundation] The session is now automatically started when a form is CSRF protected 2011-01-03 22:07:04 +01:00
Bernhard Schussek
e9a7531a26 [Form] added the constrained method Field::isTransformationSuccessful() 2011-01-03 22:06:59 +01:00
Bernhard Schussek
8513082007 [Form][HttpFoundation] Improved File and UploadedFile class 2011-01-03 22:06:56 +01:00
Bernhard Schussek
ba422e8472 [Form] Added support for virtual field groups 2011-01-03 22:06:46 +01:00
Bernhard Schussek
b9c2e98315 [Form][Locale] Implemented LocaleField and added script for updating ICU data 2011-01-02 10:41:05 +01:00
Bernhard Schussek
cd64046811 [Form] Changed semantics of "always_empty" option in PasswordField
If the option is true, the password is never written into the input field's value. If it is false, it is only written into the input field's value after submitting a form with errors.

The default value for "always_empty" is true.
2010-12-18 08:06:15 +01:00
Bernhard Schussek
93d3716a84 [Form] Implemented LanguageField 2010-12-16 10:18:32 +01:00
Bernhard Schussek
9db7db4439 [Form] Implemented CountryField 2010-12-16 10:18:31 +01:00
Bernhard Schussek
78b69876d4 [Form] Locale can now only be set statically before creating a form/field, otherwise we have too many problems updating a field's state when the locale is changed 2010-12-16 10:18:31 +01:00
Bernhard Schussek
7c557d0d6e [Form] Made and parameter in the constructor optional 2010-12-16 10:18:31 +01:00
Bernhard Schussek
b8ef7e7332 [Form] Improved semantics of property paths and removed FieldGroup::merge() for now
The semantics of property paths are now:

   (1) if a property path is set, it is _always_ respected (relative to the object
       of the parent field)
   (2) if no property path is set, the object of the parent field is _always_ ignored

Fact (2) allows us to set data into fields that is updated independently of the parent
field (like CSRF tokens, subforms with different objects etc.)

What is missing now is support for subfields that pass the object of the parent field
through to their own subfields. This functionality would be needed for GoogleMapFields,
DateRangeFields etc., which are compositions of individual fields that update the
parent object of the FieldGroup.

There are several alternatives for the latter functionality that should be discussed
in a RFC.
2010-12-16 10:18:31 +01:00
Bernhard Schussek
242be933d5 [Form] Added proper error handling to FileField 2010-12-16 10:18:31 +01:00
Johannes M. Schmitt
b3081c79e9 CS fixes 2010-12-13 11:10:55 +01:00
GordonsLondon
f73b6b4e1c [PropertyPath] Fixed usage of __get() and __set() when accessing properties that exist in the object but are not public 2010-12-10 14:28:04 +01:00
Bernhard Schussek
e80aa9a5ab [Form] Fixed: The data in a CollectionField is resized down if fields are removed 2010-12-10 14:27:57 +01:00
Bernhard Schussek
131b3fe373 [Form] Refactored Field and FieldGroup to facilitate modifications in subclasses 2010-12-10 14:27:54 +01:00
Kris Wallsmith
3e02eafc70 Fixed visibility of PHPUnit setUp and tearDown methods. 2010-12-06 15:52:23 +01:00
Fabien Potencier
1e983a6115 moved static Form configuration to a new class (avoid loading 7 classes just to enable CSRF -- even when no form is present in the page) 2010-11-26 17:44:17 +01:00
Fabien Potencier
30ccd0b794 [Form] fixed unit test paths 2010-11-23 06:59:26 +01:00
Bernhard Schussek
e0aa3f30a8 [Form] Improved FileField to store files in a temporary location in case validation fails 2010-11-23 06:51:30 +01:00
Bernhard Schussek
f9e830caa2 [Form] Added hook method preprocessData() to FieldGroup 2010-11-23 06:51:13 +01:00
Bernhard Schussek
e0d6aad5f4 [Form][FrameworkBundle][TwigBundle] Introduced class FieldError to wrap form errors 2010-11-19 07:11:29 +01:00
Bernhard Schussek
681ce7f46a [Form] Fixed: FieldGroup::hasErrors() does not return true if only children have errors 2010-11-19 07:11:17 +01:00
Bernhard Schussek
3127312139 [Form] Added option 'value_transformer' and 'normalization_transformer' to Field class 2010-11-16 07:28:33 +01:00
Jordi Boggiano
0bdb271608 [Form] Added parent calls to all configure() methods of Fields and Transformers
The calls that were on top of the function have also been moved to the bottom for safety (see previous commit)
2010-11-16 07:28:12 +01:00
GordonsLondon
23ac47e011 [Form] Added support for __get and __set in PropertyPath 2010-11-16 07:28:07 +01:00
Jordi Boggiano
a198bbcf43 [Form] throw an exception if session_id() is empty when a csrf token is generated 2010-11-12 17:53:29 +01:00
Bernhard Schussek
f5b451f5b9 [Form] Fixed MoneyToLocalizedStringTransformer and added tests 2010-11-12 17:52:56 +01:00
Bernhard Schussek
96a0bff915 [Form] Made InputField instantiable so that simple input fields can be created on the fly 2010-10-22 08:30:14 +02:00
Bernhard Schussek
72dcee594a [Form] Added validiation of hours, minutes and seconds to TimeField 2010-10-22 08:30:14 +02:00
Bernhard Schussek
6c7fab212b [Form] Added validation of years, months and days to DateField 2010-10-22 08:30:13 +02:00
Bernhard Schussek
e4c21708ca [Form] Separated value transformers from normalization transformers.
Fields can now easier support different data types in their underlying object.
These datatypes can be normalized to a single datatype using a normalization
transformer. The normalized value can then be transformed to the user's
representation with the value transformer (better name required?).
2010-10-22 08:30:13 +02:00
Bernhard Schussek
733290c112 [Form] Implemented UrlField 2010-10-22 08:30:13 +02:00
Bernhard Schussek
eaef939141 [Form] Changed value transformers to be responsible for processing empty values to be able to chain them properly. This change fixes the bug that DateField did not return NULL when submitted without values 2010-10-22 08:30:13 +02:00
Jeremy Mikola
df9ef79953 [Form] readPropertyPath should return null instead of empty array
When reading the last bit of a property path mapped to a missing array index, the method would initialize the value to an empty array.  This makes sense for cases where readPropertyPath would again be called recursively, but not when the value would be immediately returned (null would be preferable in that case).

For example, we have an object with a property called "options" that's an array of arbitrary key/value pairs.  That "options" property (and getOptions()) maps directly to a FieldGroup within the Form for this object.  That FieldGroup contains multiple TextFields for a few expected keys in the array.  As-is, if those keys were not defined, the default data set for those TextFields could end up being "Array" (string representation of an empty array).  If readPropertyPath instead returns null for this case, the default data would be transformed into an empty string.
2010-10-13 08:17:05 +02:00
Bernhard Schussek
b902cb31d7 [Form] PropertyPath camelizes property names when setting values 2010-10-11 12:52:22 +02:00
Bernhard Schussek
a66d883afd [Form] Removed CSRF setters because they have no effect once CSRF protection is enabled. Re-enable CSRF protection with the desired values instead 2010-10-11 12:52:17 +02:00
Bernhard Schussek
e1be4e9689 [Form] Refactored logic to read and set values from Field to PropertyPath 2010-10-11 12:52:10 +02:00
ornicar
06a6b15e22 [Form] Fix FieldGroup::getHiddenFields, add tests for FieldGroup::getHiddenFields and FieldGroup::getVisibleFields 2010-10-09 14:20:06 +02:00
Benjamin Eberlei
f033fc5578 Refactor ValueTransformers to recieve the original value when reverseTransform() is called. This is required for expensive value transformations for example Doctrine Collections or Proxies to allow access to a value that does not trigger expensive operations (such as database calls) anymore. 2010-10-06 14:16:47 +02:00
Fabien Potencier
2525998f6e replaced form field rendering with plain templates
Documentation available here:

http://docs.symfony-reloaded.org/master/guides/form/
2010-10-05 08:34:33 +02:00
Brandon Turner
bda264bb81 [Form] Removed invalid unit test
The bind() method only accepts arrays - passing objects causes an exception
2010-09-27 17:54:43 +02:00
Brandon Turner
953a81372a [Form] fixed typo in unit test 2010-09-25 07:57:58 +02:00
Brandon Turner
c3b89eeedd [Form] fixed failing unit test due 2010-09-25 07:57:57 +02:00
Brandon Turner
a305eb063d [Form] added support for rounding-mode option on NumberFields 2010-09-25 07:57:57 +02:00
Brandon Turner
2052501634 [Form] fixed missing locale setting in unit tests 2010-09-25 07:57:57 +02:00
Jeremy Mikola
57c0ce0ec1 [Form] Remove support for ArrayObject as ChoiceField's choices option
Internally, ChoiceField expects both choices and preferred_choices to be a simple array, so I replaced incomplete bits of code that attempted to not modify a possible ArrayObject and instead added type checks in the configure() method (with unit tests for expected exceptions).
2010-09-10 19:30:59 +02:00
Jeremy Mikola
fb24b291c8 [Form] FieldGroup::addError() can now map errors to fields within nested FieldGroups
Property paths such as fields[group].fields[innerGroup].data were not being resolved correctly, since the second iteration of addError() (based on "group") would attempt to call get('fields') instead of get('innerGroup').  Solution is to remember to bump the propertyPath forward if we're at the fields property
2010-09-09 16:29:38 -04:00