[Form] cleanup

This commit is contained in:
Victor Berchet 2012-05-27 21:41:59 +02:00
parent 9e9519913d
commit a30f4a0350
6 changed files with 38 additions and 26 deletions

View File

@ -15,7 +15,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Form\Extension\Validator\ViolationMapper\ViolationMapperInterface; use Symfony\Component\Form\Extension\Validator\ViolationMapper\ViolationMapperInterface;
use Symfony\Component\Validator\ValidatorInterface; use Symfony\Component\Validator\ValidatorInterface;
use Symfony\Component\Form\FormEvents; use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\Event\DataEvent; use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\Extension\Validator\Constraints\Form; use Symfony\Component\Form\Extension\Validator\Constraints\Form;
/** /**
@ -44,9 +44,9 @@ class ValidationListener implements EventSubscriberInterface
/** /**
* Validates the form and its domain object. * Validates the form and its domain object.
* *
* @param DataEvent $event The event object * @param FormEvent $event The event object
*/ */
public function validateForm(DataEvent $event) public function validateForm(FormEvent $event)
{ {
$form = $event->getForm(); $form = $event->getForm();

View File

@ -22,15 +22,13 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
/** /**
* Form represents a form. * Form represents a form.
* *
* A form is composed of a validator schema and a widget form schema.
*
* To implement your own form fields, you need to have a thorough understanding * To implement your own form fields, you need to have a thorough understanding
* of the data flow within a form field. A form field stores its data in three * of the data flow within a form. A form stores its data in three different
* different representations: * representations:
* *
* (1) the format required by the form's object * (1) the "model" format required by the form's object
* (2) a normalized format for internal processing * (2) the "normalized" format for internal processing
* (3) the format used for display * (3) the "view" format used for display
* *
* A date field, for example, may store a date as "Y-m-d" string (1) in the * A date field, for example, may store a date as "Y-m-d" string (1) in the
* object. To facilitate processing in the field, this value is normalized * object. To facilitate processing in the field, this value is normalized
@ -38,18 +36,21 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
* localized string (3) is presented to and modified by the user. * localized string (3) is presented to and modified by the user.
* *
* In most cases, format (1) and format (2) will be the same. For example, * In most cases, format (1) and format (2) will be the same. For example,
* a checkbox field uses a Boolean value both for internal processing as for * a checkbox field uses a Boolean value for both internal processing and
* storage in the object. In these cases you simply need to set a value * storage in the object. In these cases you simply need to set a value
* transformer to convert between formats (2) and (3). You can do this by * transformer to convert between formats (2) and (3). You can do this by
* calling appendClientTransformer(). * calling addViewTransformer().
* *
* In some cases though it makes sense to make format (1) configurable. To * In some cases though it makes sense to make format (1) configurable. To
* demonstrate this, let's extend our above date field to store the value * demonstrate this, let's extend our above date field to store the value
* either as "Y-m-d" string or as timestamp. Internally we still want to * either as "Y-m-d" string or as timestamp. Internally we still want to
* use a DateTime object for processing. To convert the data from string/integer * use a DateTime object for processing. To convert the data from string/integer
* to DateTime you can set a normalization transformer by calling * to DateTime you can set a normalization transformer by calling
* appendNormTransformer(). The normalized data is then * addNormTransformer(). The normalized data is then converted to the displayed
* converted to the displayed data as described before. * data as described before.
*
* The conversions (1) -> (2) -> (3) use the transform methods of the transformers.
* The conversions (3) -> (2) -> (1) use the reverseTransform methods of the transformers.
* *
* @author Fabien Potencier <fabien@symfony.com> * @author Fabien Potencier <fabien@symfony.com>
* @author Bernhard Schussek <bschussek@gmail.com> * @author Bernhard Schussek <bschussek@gmail.com>

View File

@ -121,9 +121,10 @@ class FormConfig implements FormConfigEditorInterface
/** /**
* Creates an empty form configuration. * Creates an empty form configuration.
* *
* @param string $name The form name. * @param string $name The form name
* @param string $dataClass The class of the form's data. * @param string $dataClass The class of the form's data
* @param EventDispatcherInterface $dispatcher The event dispatcher. * @param EventDispatcherInterface $dispatcher The event dispatcher
* @param array $options The form options
* *
* @throws UnexpectedTypeException If the name is not a string. * @throws UnexpectedTypeException If the name is not a string.
* @throws \InvalidArgumentException If the data class is not a valid class or if * @throws \InvalidArgumentException If the data class is not a valid class or if

View File

@ -52,7 +52,12 @@ interface FormConfigEditorInterface extends FormConfigInterface
function addValidator(FormValidatorInterface $validator); function addValidator(FormValidatorInterface $validator);
/** /**
* Appends a transformer to the client transformer chain * Appends a transformer to the view transformer chain.
*
* The transform method of the transformer is used to convert data from the
* normalized to the view format.
* The reverseTransform method of the transformer is used to convert from the
* view to the normalized format.
* *
* @param DataTransformerInterface $viewTransformer * @param DataTransformerInterface $viewTransformer
* *
@ -61,14 +66,19 @@ interface FormConfigEditorInterface extends FormConfigInterface
function addViewTransformer(DataTransformerInterface $viewTransformer); function addViewTransformer(DataTransformerInterface $viewTransformer);
/** /**
* Clears the client transformers. * Clears the view transformers.
* *
* @return self The configuration object. * @return self The configuration object.
*/ */
function resetViewTransformers(); function resetViewTransformers();
/** /**
* Prepends a transformer to the normalization transformer chain * Prepends a transformer to the normalization transformer chain.
*
* The transform method of the transformer is used to convert data from the
* model to the normalized format.
* The reverseTransform method of the transformer is used to convert from the
* normalized to the model format.
* *
* @param DataTransformerInterface $modelTransformer * @param DataTransformerInterface $modelTransformer
* *

View File

@ -73,14 +73,14 @@ interface FormConfigInterface
function getTypes(); function getTypes();
/** /**
* Returns the client transformers of the form. * Returns the view transformers of the form.
* *
* @return array An array of {@link DataTransformerInterface} instances. * @return array An array of {@link DataTransformerInterface} instances.
*/ */
function getViewTransformers(); function getViewTransformers();
/** /**
* Returns the view transformers of the form. * Returns the model transformers of the form.
* *
* @return array An array of {@link DataTransformerInterface} instances. * @return array An array of {@link DataTransformerInterface} instances.
*/ */

View File

@ -11,7 +11,7 @@
namespace Symfony\Component\Form\Tests\Extension\Validator\EventListener; namespace Symfony\Component\Form\Tests\Extension\Validator\EventListener;
use Symfony\Component\Form\Event\DataEvent; use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormBuilder; use Symfony\Component\Form\FormBuilder;
use Symfony\Component\Form\FormError; use Symfony\Component\Form\FormError;
@ -114,7 +114,7 @@ class ValidationListenerTest extends \PHPUnit_Framework_TestCase
->method('mapViolation') ->method('mapViolation')
->with($violation, $form, false); ->with($violation, $form, false);
$this->listener->validateForm(new DataEvent($form, null)); $this->listener->validateForm(new FormEvent($form, null));
} }
public function testMapViolationAllowsNonSyncIfInvalid() public function testMapViolationAllowsNonSyncIfInvalid()
@ -131,7 +131,7 @@ class ValidationListenerTest extends \PHPUnit_Framework_TestCase
// pass true now // pass true now
->with($violation, $form, true); ->with($violation, $form, true);
$this->listener->validateForm(new DataEvent($form, null)); $this->listener->validateForm(new FormEvent($form, null));
} }
public function testValidateIgnoresNonRoot() public function testValidateIgnoresNonRoot()
@ -147,6 +147,6 @@ class ValidationListenerTest extends \PHPUnit_Framework_TestCase
$this->violationMapper->expects($this->never()) $this->violationMapper->expects($this->never())
->method('mapViolation'); ->method('mapViolation');
$this->listener->validateForm(new DataEvent($form, null)); $this->listener->validateForm(new FormEvent($form, null));
} }
} }