Commit Graph

35 Commits

Author SHA1 Message Date
Bernhard Schussek
cb283d3783 [Form] Renamed 'key' to 'name'. Removed setKey() totally. 2011-03-17 11:03:10 +01:00
Bernhard Schussek
4346097ffd [Form] Added TODOs and a tweak 2011-03-04 16:01:50 +01:00
Bernhard Schussek
e53c688a6b [Form] Fixed RepeatedField, improved structure of the Twig templates 2011-03-02 16:00:31 +01:00
Bernhard Schussek
5705f74bd0 [Form] Refactored FieldFactory and moved new implementation into the DIC. FormTest fails now. 2011-03-02 14:58:19 +01:00
Bernhard Schussek
8a6246bd06 [Form] Refactored contents of FormFactory into individual FieldConfig classes 2011-03-02 12:20:30 +01:00
Bernhard Schussek
9eff64dd54 [Form] Added EventListener implementation and moved CollectionField to factory 2011-03-01 15:18:55 +01:00
Bernhard Schussek
528ef55da6 [Form] Implemented generic data filter hooks
You can now modify set or bound data by adding a filter for either of the following events:

* Filters::filterBoundDataFromClient
* Filters::filterBoundData
* Filters::filterSetData
2011-03-01 14:19:28 +01:00
Bernhard Schussek
c1edf116f2 [Form] Removed notion of "hidden" fields
Instead, hidden fields now override the "row" template to not include a label or errors.

The "rest" (former "hidden") helper has been adapted to output any fields that were not
rendered manually. It should usually be called at the end of a form.
2011-02-28 17:01:11 +01:00
Bernhard Schussek
02d2121dcd [Form] Improved rendering
Fields are not available in the templates anymore. Instead, all required information can be
accessed through view variables.

Example usage of helpers and variables in a form theme:

// use the label helper
{{ this.label('my label') }}

// use the label variable
{{ this.vars.label }}
{{ label }}

Example usage of helpers and variables in a normal template:

// use the label helper
{{ field.label('my label') }}

// use the label variable
{{ field.vars.label }}
2011-02-28 16:50:23 +01:00
Bernhard Schussek
c6e9fd97b6 [Form] Fixed various bugs 2011-02-25 00:09:10 +01:00
Bernhard Schussek
e334c4734e [Form] Registered FormFactory in the DIC 2011-02-24 21:27:44 +01:00
Bernhard Schussek
f2c1976da6 [Form] Refactored FileField to FormFactory and fixed file upload mechanism 2011-02-24 20:47:48 +01:00
Bernhard Schussek
848ec01f02 [Form] Refactored RepeatedField to FormFactory 2011-02-24 16:54:34 +01:00
Bernhard Schussek
87b417889c [Form] Fixed DateTimeFieldTest 2011-02-24 16:34:29 +01:00
Bernhard Schussek
acc5c76f77 [Form] Fixed failing DateFieldTest and TimeFieldTest 2011-02-24 16:19:59 +01:00
Bernhard Schussek
8e2d0bae90 [Form] Ported DateTimeField to FormFactory 2011-02-23 23:34:25 +01:00
Bernhard Schussek
78b26c2cc5 [Form] Renamed type 'raw' to 'array' in date and time field 2011-02-23 21:05:33 +01:00
Bernhard Schussek
c8275c5b27 [Form] Refactored PercentField to FormFactory 2011-02-23 15:26:01 +01:00
Bernhard Schussek
68bb3ff606 [Form] Used ValuePlugin to pass displayed data to template. The order of added renderer plugins and set renderer variables is now respected 2011-02-23 14:11:18 +01:00
Bernhard Schussek
a40e2dd77b [Form] Deleted obsolete Field classes, ported some more to FormFactory and fixed lots of failing tests 2011-02-23 14:11:18 +01:00
Bernhard Schussek
7492873186 [Form] Fixed a couple of unit tests, refactored PasswordField to FormFactory 2011-02-23 14:11:18 +01:00
Bernhard Schussek
fee0885256 [Form] Moved options from Field and Form to FormFactory. Tests fail now 2011-02-23 14:11:18 +01:00
Bernhard Schussek
ce432e939d [Form] Changed notion of 'parameter' to 'var' in the renderer. Merged vars and attributes into single array 2011-02-23 14:11:18 +01:00
Bernhard Schussek
2b8ca25d01 [Form] Refactored NumberField, IntegerField, HiddenField and MoneyField to FormFactory 2011-02-23 14:11:18 +01:00
Bernhard Schussek
af8a093b00 [Form] Refactored CountryField, LanguageField, LocaleField and BirthdayField to FormFactory 2011-02-23 14:11:18 +01:00
Bernhard Schussek
9394ffdea1 [Form] Started to refactor TimeField to FormFactory::getTimeField(). Validation logic is still missing. 2011-02-23 14:11:18 +01:00
Bernhard Schussek
975b8ebe9b [Form] Started to refactor DateField to FormFactory::getDateField(). Validation logic is still missing. 2011-02-23 14:11:18 +01:00
Bernhard Schussek
b148a2a7ed [Form] Refactored ChoiceField to FormFactory::getChoiceField() 2011-02-23 14:11:18 +01:00
Bernhard Schussek
61ea51d858 [Form] Added first version of FormFactory, ValuePlugin and ParentNamePlugin 2011-02-23 14:11:18 +01:00
Bernhard Schussek
a28151a8af [Form] Removed FormFactory and improved the form instantiation process
With the form factory there was no reasonable way to implement instantiation of custom form classes. So the implementation was changed to let the classes instantiate themselves. A FormContext instance with default settings has to be passed to the creation method. This context is by default configured in the DI container.

	$context = $this->get('form.context');
	// or
	$context = FormContext::buildDefault();
	$form = MyFormClass::create($context, 'author');

If you want to circumvent this process, you can also create a form manually. Remember that the services stored in the default context won't be available then unless you pass them explicitely.

	$form = new MyFormClass('author');
2011-02-01 15:27:12 +01:00
Bernhard Schussek
fb1f99137d [Form] Changed semantics of a "bound" form
A form now always has to be bound, independent of whether the request is a POST request or not. The bind() method detects itself whether the request was a post request or not and reads its data accordingly. The "old" bind()/isBound() methods were renamed to submit()/isSubmitted().

	$form = new Form('author');
	$form->bind($request, $author);

	if ($form->isValid()) {
		// isValid() implies isSubmitted(), non-submitted forms can
		// never be valid
		// do something with author now
	}

Alternatively, you can only bind global variables, if you don't have a request object.

	$form->bindGlobals($author);

Note that the $author object is in both cases optional. You can also pass no object at all and read the data using $form->getData(), but then no validation will occur. You can also prefill the form with an object during instantiation.

	$form = new Form('author', array('data' => $author));
	$form->bind($request);

	// etc.
2011-02-01 15:27:12 +01:00
Bernhard Schussek
fdbc064f06 [Form] Removed automatic distribution of the locale in the Form component. This leads to more problems than it solves. 2011-02-01 15:27:12 +01:00
Bernhard Schussek
d017970867 [Form] Implemented FormFactory::buildDefault() to ease the use of the new CSRF implementation without the DIC 2011-01-25 11:31:04 +01:00
Bernhard Schussek
7848a7ca63 [Form] Refactored CSRF implementation to be reusable and to work correctly with the session service 2011-01-25 11:31:04 +01:00
Bernhard Schussek
8f8f53d631 [Form][FrameworkBundle] Implemented FormFactory and added it to the DI container 2011-01-19 16:25:50 +01:00