Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork5.3k
[WIP] [2.7+] explicit differences between 'data' & 'empty_data' options in FormType#6265
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Changes fromall commits
File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,19 +1,24 @@ | ||
| data | ||
| ~~~~ | ||
| **type**: ``mixed`` **default**: Defaults to field of the underlyingstructure. | ||
| When youattach a form type to a form, it becomes a field that initially maps | ||
| the value of thecorresponding propertyor keyof the form's domaindata. If | ||
| you want to override the initial valuewhich will be rendered intheview for | ||
| the form or any nested field, you can set it in the data option:: | ||
| $builder->add('token', 'hidden', array( | ||
| 'data' => 'abcdef', | ||
| )); | ||
| // Is the same as | ||
| $resolver->setDefault('data' => array('token' => 'abcdef')); | ||
| .. note:: | ||
| The default values for form fields are taken directly from the underlying | ||
| data structure matching the field's name with a property of an object or a | ||
| key of an array. The ``data`` option overrides this default value. | ||
Member There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others.Learn more. You should make it clearer than overriding the default value like this will cause issues if you are using the form to edit an object rather than to create it, as the form value will still be filled from ContributorAuthor There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others.Learn more. Thank you for this heads-up! ContributorAuthor There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others.Learn more. @stof done in the sentence below | ||
| It means that when the data passed to the form is an object you want to | ||
| edit, the `data` option will also override the value already set. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,7 +1,7 @@ | ||
| empty_data | ||
| ~~~~~~~~~~ | ||
| **type**: ``string`` or ``array`` when the form is compound | ||
| .. This file should only be included with start-after or end-before that's | ||
| set to this placeholder value. Its purpose is to let us include only | ||
| @@ -10,23 +10,31 @@ empty_data | ||
| DEFAULT_PLACEHOLDER | ||
| This option determines what value the field will return when the submitted | ||
| value is empty (or missing). It does not set an initial value if none is | ||
| provided when the form is rendered in a view (see ``data`` or ``placeholder`` | ||
| options). | ||
| It helpsyouhandling form submission and youcan customize this to your needs. | ||
ContributorAuthor There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others.Learn more. We could maybe remove "customize" as this is the point of an option. | ||
| For example, if you want the ``name`` field to be explicitly set to ``John Doe`` | ||
| when no value isselected, you can do it like this:: | ||
| $builder->add('name', null, array( | ||
| 'required' => false, | ||
| 'empty_data' => 'John Doe', | ||
| )); | ||
| If a form is compound, you can set ``empty_data`` as an array with field names | ||
| as keys and submitted values as string values (or arrays if nested fields are | ||
| also compound). | ||
| .. note:: | ||
| If you want to set the ``empty_data`` option for your entire form class, | ||
| see the cookbook article :doc:`/cookbook/form/use_empty_data`. | ||
| .. caution:: | ||
| When using `empty_data` as an empty string, the form will always return | ||
| ``null``. If you need to get an empty string to be returned, you should | ||
| use a data transformer, see the cookbook article | ||
| :doc:`cookbook/form/data_transformers`. | ||